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

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

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

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

Кошик

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

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

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

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

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

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

5 голосів

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

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 інтернет-магазинів по всьому світу, надаючи комплексні рішення від розробки до технічної підтримки.

статей
12
переглядів
53,908
вподобань
63
підписники
3

Схожі статті

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

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

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

Увійти
a
А можна використовувати з Laravel Sail?
o
Перейшов з XAMPP на Docker - набагато зручніше!
DEV Тестовий
Радий, що стаття була корисною.
o
How do I persist database data between restarts?
m
Як вирішити проблему з повільним volume mount на Mac?
o
Is this compatible with Docker Desktop on Windows?

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

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