Как рулить docker-compose в проде?

Всем привет. А можно много вопросов? Случилось так, что я с LXC перелезаю на докер и мне технически почти всё понятно, но не понятна философия в нескольких местах. Интересует именно то, как бы вы сделали. Предположим, что имеем веб сервер средней важности. На нём развернуты сервисы (в docker-compose):

nginx
php-fpm (собирается из образа с установкой всяких extentions через Dckerfile)
MySQL

1) А теперь я хочу апнуть версию PHP. Для этого я могу собрать еще один контейнер в том же yaml файле, сделать link на него у других сервисов и потом переключить в конфигах Nginx backend. Норм?
А ведь я могу взять и собрать контейнер именно в докерфайле и потом сказать docker-compose, что берем локальный image?
2) Кстати, как поддерживаете чистоту локальных собранных image?
3) Нормально вообще на проде пересобирать сервисы? Напомню, что сайт средней важности. 1-10 мин не критичны.
4) Общий вопрос: предположим вы заядлый Ubuntu пользователь. Но внезапно надо собрать тот же веб сервер как у меня, но на образе Centos. Там разные названия библиотек, extensions для php, названия пакетов и т.д. И вы их не знаете. Это не сложно сделать на "живой системе", но конопатить dockerfile по сто раз с чтением ошибки - бред и долго. Как происходит написание инструкций в Dockerfile при таком раскладе?
5) Что делать если я хочу временно опустить один контейнер? Compose не обидится?

Всем спасибо.
  • Вопрос задан
  • 723 просмотра
Пригласить эксперта
Ответы на вопрос 2
DoctorStein
@DoctorStein
QNX, Linux, С++, С#, mono
docker-compose не очень, сейчас в моде kubernetes. Но если очень хочется, то можно:
1. Редактируем yaml и Dockerfile если надо. docker-compose build, docker-compose down, docker-compose up -d. Если изменения yaml большие, например меняется состав сервисов, то стоит down сначала, потом редактирование.
2,3. По возможности локально image не собираются. Есть отдельный процесс разработки, image выкладываются в частный registry, откуда и берутся композом.
4. Образы строятся на том, на чём удобно разработчику. Ни разу не было задачи заменить типа описанной. Но бывает наоборот - новая ОС, на ней запускаются старые проверенные докеры.
5. docker-compse stop servicename
Ответ написан
@ProFfeSsoRr
Сис.админ по Linux
Как рулить docker-compose в проде?

Никак, это решение не для прода, а для запуска на локальных компьютерах. Для прода Kubernetes.

сделать link на него у других сервисов и потом переключить в конфигах Nginx backend
если вы хотите делать так, то это уже не "средней важности". Если вы можете себе позволить простой, почему бы просто не стопнуть старый контейнер, и запустить потом уже обновленный?

Но внезапно надо собрать тот же веб сервер как у меня, но на образе Centos. Там разные названия библиотек, extensions для php, названия пакетов и т.д.

Так, стоп, вы тут всё в кучу смешали. Вы пишите, что у вас сервер, который запускает контейнеры. А в контейнерах уже внутри у вас там вебсервер. Так вот если у вас контейнеры - вам там какая разница, какие они внутри? Ну в смысле что вы берёте те, что вам нравятся и которые вы понимаете, и пользуетесь этим. Зачем пересобирать контейнер из убунты в центось, когда можно пойти и взять сразу с центосью? А самое главное - зачем это делаеть тому человеку, который не знает названий бибилотек и вот этого всего? Если он не знает - он возьмёт то, что знает, контейнеры в том числе для этого и придуманы - вот знает у вас разработчик убунту, использует её, и контейнеры на базе убунты собирает. А дальше он уходит на продовый сервер, который сис.админы подняли на centos например, потому что считают, что для этих задач она им лучше подходит. Таким образом разные люди используют каждый то, что знают уже, и всё вместе работает и решает поставленные задачи.
Ответ написан
Ваш ответ на вопрос

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

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