e_svirsky
@e_svirsky
Web Developer

Как настроить Docker для deployment-а?

Всем привет.
Подскажите как настроить Docker для deployment-а.
Имеется - сервер на Linux - RedHat, репозиторий на github с PHP проектом на Symfony.
Хочу настроить деплоймент с помощью docker. Контейнеры - nginx, phpfpm, mysql, redis.
Поясните плз вкратце в 2х словах архитектуру. Что будет куда закидываться. Нужен ли дженкинс, или можно обойтись без него.
Ссылки с похожими кейсами приветствуются.

UPD:
Где хранить скрипты деплоймента? В папке самого проекта? Или лучше в отдельную репу поместить...
Как это всё работает? Опишите процесс словами схематично.

Спасибо!
  • Вопрос задан
  • 7047 просмотров
Решения вопроса 1
Preemiere
@Preemiere
Symfony developer
У меня следующая схема.
В репозитории проект в корне лежит Dockerfile, который умеет собирать как прод так и дев версию контейнера.
Для каждого сервиса отдельно в гите свои репозитории. Например у nginx в репе Dockerfile, в котором по сути одна команда - скопировать конфиг.
Redis у меня работает с конфигами по дефолту, так что для него репы нет.
Так же в каждой репе лежит конфиг для Drone, который при отправке коммитов запускает сборку, тестирование и последующий деплой на прод сервер.
Деплоем контейнеров на сервере у меня сейчас занимается Rancher. Но в ближайшее время планирую перейти на Docker Swarm.

Конфиги сборок лежат в гите, кроме параметров.
Параметры для Symfony я передаю через environment при старте контейнеров.
Параметры для сборки зашифрованы в .drone.sec файле. Но в версии 0.5 они будут лежать сразу на сервере.

Docker-compose для прода я не использую, через него поднимается окружение исключительно для дев версии.

Прокидывать папки с хостовой машины не рекомендуется, поэтому для персистентных данных нужно создавать volume и прокидывать их.

При данной схеме на сервер вообще не захожу. Сделал пуш, код протестировался и задеплоился.

Примеры моих конфигов: Dockerfile, drone.yml
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mahnunchik
@mahnunchik
https://about.me/vlasenko
Ещё к вышесказанному можно перейти на GitLab и запускать скрипты развертывания как GitLab CI задачи. Также можно использовать GitLab Container Registry, но это выходит за скоуп вашего вопроса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы