Нічого не знайдено

Спробуйте інший пошуковий запит

Популярні запити:

Додати в кошик

Кошик

У вас поки немає покупок

Переглянути маркетплейс

Docker для локальної розробки OpenCart

Налаштовуємо Docker середовище для розробки OpenCart: docker-compose, Nginx, PHP-FPM, MySQL та Redis.

15 хв читання
2,628
5
Docker для локальної розробки OpenCart

Як ви запускаєте проекти локально?

8 голосів

Увійдіть , щоб проголосувати

Docker революціонізував процес розробки, дозволяючи створювати ізольовані середовища, ідентичні продакшену. У цій статті налаштуємо повноцінне Docker середовище для OpenCart.

Чому Docker?

  • Консистентність — однакове середовище для всіх розробників
  • Ізоляція — різні версії PHP для різних проектів
  • Простота — один docker-compose up запускає все
  • Продакшен-ready — легко мігрувати на сервер

Структура проекту

opencart-docker/
├── docker/
│   ├── nginx/
│   │   └── default.conf
│   └── php/
│       └── Dockerfile
├── src/
│   └── (OpenCart files)
├── docker-compose.yml
└── .env

Docker Compose конфігурація

# docker-compose.yml
version: '3.8'

services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./src:/var/www/html
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
    networks:
      - opencart

  php:
    build:
      context: ./docker/php
    volumes:
      - ./src:/var/www/html
    environment:
      - PHP_MEMORY_LIMIT=256M
    networks:
      - opencart

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USERNAME}
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      - opencart

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"
    networks:
      - opencart

  mailhog:
    image: mailhog/mailhog
    ports:
      - "1025:1025"
      - "8025:8025"
    networks:
      - opencart

networks:
  opencart:

volumes:
  mysql_data:

PHP Dockerfile

# docker/php/Dockerfile
FROM php:8.2-fpm

# Встановлення залежностей
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libzip-dev \
    unzip \
    git \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
        gd \
        mysqli \
        pdo_mysql \
        zip \
        opcache

# Redis extension
RUN pecl install redis && docker-php-ext-enable redis

# Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# PHP конфігурація
RUN echo "memory_limit=256M" > /usr/local/etc/php/conf.d/opencart.ini \
    && echo "upload_max_filesize=50M" >> /usr/local/etc/php/conf.d/opencart.ini \
    && echo "post_max_size=50M" >> /usr/local/etc/php/conf.d/opencart.ini

WORKDIR /var/www/html

Nginx конфігурація

# docker/nginx/default.conf
server {
    listen 80;
    server_name localhost;
    root /var/www/html;
    index index.php;

    location / {
        try_files $uri $uri/ @opencart;
    }

    location @opencart {
        rewrite ^/(.+)$ /index.php?_route_=$1 last;
    }

    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
    }
}
Порада: Додайте mailhog для тестування email без реальної відправки. Веб-інтерфейс доступний на порту 8025.

Файл .env

# .env
DB_ROOT_PASSWORD=root_password
DB_DATABASE=opencart
DB_USERNAME=opencart
DB_PASSWORD=opencart_password

Запуск

# Побудова та запуск
docker-compose up -d --build

# Перегляд логів
docker-compose logs -f

# Зупинка
docker-compose down

# Видалення з volumes
docker-compose down -v

Docker — це не просто інструмент, це філософія розробки. "Works on my machine" більше не є виправданням.

— Solomon Hykes, творець Docker

Корисні команди

# Зайти в PHP контейнер
docker-compose exec php bash

# Виконати команду в контейнері
docker-compose exec php php -v

# MySQL консоль
docker-compose exec mysql mysql -u opencart -p

# Очистити все
docker system prune -a

Висновок

Тепер у вас є повноцінне Docker середовище для розробки OpenCart. Це однакове середовище можна використовувати на будь-якому комп'ютері та легко адаптувати для продакшену.

Наступний крок: Налаштуйте Xdebug для відлагодження PHP коду прямо в IDE.
DEV

DEV

Привіт! Я досвідчений розробник з OpenCart екосистеми з понад 10 роками практики. Технічний стек включає PHP (core мова для OpenCart), MySQL/MariaDB для баз даних, JavaScript/jQuery для фронтенду, HTML5/CSS3/Bootstrap для верстки. Маю глибокий досвід роботи з архітектурою OpenCart (MVC, Event System, OCMOD), інтеграцією платіжних систем та API, оптимізацією продуктивності магазинів. Окрім розробки, займаюся серверним адмініструванням — Linux (Ubuntu/Debian), Apache/Nginx, налаштування VPS/Dedicated серверів, DNS менеджмент, SSL сертифікати, email. Обслуговую понад 5000 інтернет-магазинів по всьому світу, надаючи комплексні рішення від розробки до технічної підтримки.

статей
9
переглядів
39,546
вподобань
48
підписники
3

Схожі статті

Коментарі (0)

Відповідь для

Увійдіть, щоб залишити коментар

Увійти

Коментарів поки немає

Будьте першим, хто залишить коментар до цієї статті!

Ми використовуємо cookies

Ми використовуємо cookies та схожі технології для покращення вашого досвіду, аналізу трафіку та показу персоналізованої реклами. Детальніше — у нашій Політиці cookies.