@dockerlover

Как правильно сбилдить, залить и запустить на проде контейнеры docker compose?

Добрый вечер.

Есть простой docker-compose из трех контейнеров nginx, mysql, php-fpm, все как обычно.

По команде docker compose build билдятся образы, после чего docker compose up их запускает, и на локальной машине всё прекрасно.

Но как теперь передать и запустить их на проде?

Очевидный вариант - скопировать всю папку проекта, запустить docker compose build там и радоваться, понятное дело, не подходит.

Я пробовал вариант с docker save/docker load:
- приходится прописывать save/load вручную для каждого образа;
- так же вручную делать docker create (по сути заменяя собой весь docker compose для оркестрации);

Я пробовал вариант с docker save/docker load, после чего вручную скопировал Dockerfile и docker-compose.yml и сделал docker compose up - в результате он попытался ещё раз сбилдить все образы по-новой, естественно не нашел файлов проекта и упал.

И конечно же я попробовал export DOCKER_HOST=ssh://prod.example.com, и выполнять docker compose внутри него. Проблем с ним не возникло - но меня смущает необходимость гадить себе в переменные окружения, не говоря уже о том, что я явно когда-то забуду про неё, и выполню на проде то, что не стоит.

Собственно, вопрос в заголовке: как правильно задеплоить контейнеры docker compose?
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 2
Обычно образ делается в системах CI/CD, связанных с VCS, т.е. фиксация кода вызывает экшен (GitHub Actions/GitLab CI/CD, CircleCI и пр.), при котором на внешних мощностях из кода строится образ, которому присваивается версия и он загружается (с docker push) на хранилище образов (AWS ECR, JFrog Artifactory и т.д.), а оттуда скачивается (docker pull) на продакшен машине при запуске docker compose или в другой среде оркестрации контейнеров.
Ответ написан
@Drno
Скопировать да запустить
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы