Контейнеризация Opencart-a. Docker.

Тема в разделе "Установка, обновление, настройка", создана пользователем Grubby, 28 авг 2017.

Метки:
  1. TopicStarter Overlay
    Offline

    Grubby Пользователь

    Сообщения:
    17
    Симпатии:
    16
    Репутация:
    0
    Всем привет,

    Виртуализация, контейнеризация и близкие современные серверные технологии уже давно укрепили свои позиции в продакшене и разработке. Крупные компании используют микросервисы давно и успешно.

    Я очень люблю Docker и контейнеризацию в целом как технологию, но был удивлен что нет готовых решений для Opencart, в итоге собрал сам и делюсь с Вами, надеюсь кому-то пригодится :)

    Это готовый стек, который в течении 30 сек разворачивается на VPS. Состоит из 3 изолированных контейнеров.

    Traefik - прокси сервер и LB. Он занимается тем что перенаправляет запросы на 2й контейнер. Встроенная поддержка HTTPS, быстрый, отлично работает с контейнерами, имеет базовую статистику запросов.
    Nginx 1.13.4 (последняя версия) & PHP-FPM 5.6 - ну тут все понятно. Nginx с настроенным конфигом под opencart для продакшена. PHP-FPM на unix-сокет-е (быстрее чем обычный TCP). Модули требуемые для opencart-а.
    Mariadb - ну тут тоже все понятно, база.

    Инструкция:
    Разархивируем и в папку src распаковываем opencart и нужные вам файлы (темы, локализации и т.д.) и загружаем все целиком на VPS.
    На VPS должен быть установлен Docker & docker-compose. В папке с docker-compose.yml пишем в терминале docker-compose up -d и ждем пока Docker все сделает.
    Далее нам нужно создать базу для Opencart-а. Пишем в терминале:
    1. docker exec -ti mysql bash (мы зашли в контейнер где крутится наша mysql)
    2. mysql -u root -p (пароль: WUhy4SKZYeMDuGs5K). Пароль конечно лучше сменить на свой, для этого перед тем как загрузить на VPS, открываем файл docker-compose.yml и в самом низу меняем пароль на свой.
    3. CREATE DATABASE oc_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
    4. GRANT ALL ON oc_user.* TO 'oc_db'@'%' IDENTIFIED BY 'password'; (password - меняем на свой пароль)
    5. FLUSH PRIVILEGES;
    6. EXIT;
    Все мы создали базу для нашего будущего магазина.

    Теперь переходим на наш домен. И далее продолжаем установку opencart как обычно. В настройках адреса базы ставим: db
    Пользователь: oc_user
    Имя базы: oc_db

    Готово.

    В чем прелесть вообще контейнеризации.
    Простота и быстрота развертки на VPS. docker-compose up -d и сидим смотрим как Docker делает все сам. Контейнеризация имеет очень маленький оверхед.
    Масштабируемость. Можно за минуту развернуть 10-20-30… дополнительных контейнеров и traefik будет балансировать трафик между ними.
    Изолированность контейнеров между собой. Traefik не имеет прямого доступ-а к db. Можно поменять любую из частей стека без головной боли.

    В будущем обновлении планирую разделить между собой php & nginx, для лучшей масштабируемости и заменяемости компонентов, сделать HTTPS опцию в конфиге (Letsencrypt), git pull & push с github-а. Автоматизировать действия с базой.

    У меня используется в продакшене на 2-х магазинах на opencart + еще в других проектах на magento.

    Надеюсь кому-то пригодится :) Предложения всегда приветствуются. С вопросами постараюсь помочь.
    За чуть сумбурное повествование сори заранее :)
     

    Вложения:

    vladis, Sergey_1975, whuga и 7 другим нравится это.
  2. Offline

    samprog Пользователь

    Сообщения:
    1
    Симпатии:
    0
    Репутация:
    0
    Огромное спасибо. После первой сборки ошибка зависимости, но после небольшого изменения Dokerfile (ENV NGINX_VERSION 1.13.5-2~jessie), все заработало
     
  3. Offline

    Vallka Пользователь

    Сообщения:
    14
    Симпатии:
    0
    Репутация:
    0
    спасибо
     
  4. Offline

    serginna Пользователь

    Сообщения:
    3
    Симпатии:
    0
    Репутация:
    0
    спасибо, круто
     
  5. Offline

    marshal911 Пользователь

    Сообщения:
    6
    Симпатии:
    1
    Репутация:
    0
    спасибо
     
  6. Offline

    Nikki9 Пользователь

    Сообщения:
    1
    Симпатии:
    0
    Репутация:
    0
    Thanks:cool:
     
  7. Offline

    whuga Пользователь

    Сообщения:
    1
    Симпатии:
    0
    Репутация:
    0
    Спасибо
     
  8. Offline

    vladis Пользователь

    Сообщения:
    2
    Симпатии:
    0
    Репутация:
    0
    Спасибо ! клас
     
  9. Offline

    vladis Пользователь

    Сообщения:
    2
    Симпатии:
    0
    Репутация:
    0
    Спасибо!
    класно описали всё