Как правильно работать с Docker?

Добрый день.

Подскажите, как правильнее всего использовать Docker веб-разработчику?
Интересует именно стоит ли разделять 1 проект на разные контейнеры (напр. nginx, php-fpm, mariadb как отдельные сервисы) и управлять через docker-compose или собрать все в 1? Интересует такой вопрос потому, что вижу во многих проектах именно комбайн. Лично для меня удобнее разделять на сервисы, чтобы легко менять версии сервисов. Правильно ли я поступаю? В чем достоинства и недостатки второго метода, кроме того, что приходится пересобирать весь контейнер?
  • Вопрос задан
  • 1636 просмотров
Решения вопроса 2
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Про метод "всё в одном":
Достоинство одно: запустил, оно работает.
Дополнительные недостатки:
  • Куча процессов в одном контейнере
  • При передачи по интернетам одним куском (т.е. не из LEMP-stack образа) будут проблемы с битыми данными
  • Невозможность масштабирования отдельных сервисов (но тут уже повышается сложность работы в виде оркестрации)
Ответ написан
ArtyomovAnton
@ArtyomovAnton
PHP и всё что рядом
В лучших практиках сказано: You may have heard that there should be “one process per container”. While this mantra has good intentions, it is not necessarily true that there should be only one operating system process per container. In addition to the fact that containers can now be spawned with an init process, some programs might spawn additional processes of their own accord. For instance, Celery can spawn multiple worker processes, or Apache might create a process per request. While “one process per container” is frequently a good rule of thumb, it is not a hard and fast rule. Use your best judgment to keep containers as clean and modular as possible.
Так что смотрите сами.
Я сделал так: Nginx на хост машине. 1 контейнер с mariaDB, другой например с mysql. Они работают на разных портах. Так же есть контейнеры с php-fpm. Один проект - один контейнер php-fpm. Каждый php контейнер видит только файлы своего проекта и работает на своем порту... Контейнеры php линкуются с контейнерами БД.
NGINX хост машины имеет конфиги виртуальных хостов, где и понимает, какой домен на какой контейнер будет проксироваться (порты то разные). NGINX не стал выносить в контейнер, т.к. не вижу смыслы иметь разные версии nginx.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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