@xilit

Стоит ли использовать каждый контейнер Docker отдельно для каждого запущенного процесса?

Здравствуйте. Читаю книгу "Использование Docker" автор Эдриен Моуэт. В книге он говорит о том, что разработчики docker считают, что наиболее правильным в работе контейнеров использовать один процесс на один контейнер. Подскажите, значит ли это, что если я хочу развернуть веб сервер то мне надо минимум 3 контейнера:
1. СУБД
2. Веб-сервер
3. Сам сайт.
Или это все непринципиально и все можно сложить в один контейнер и будет работать так же хорошо.
  • Вопрос задан
  • 430 просмотров
Решения вопроса 1
В книге он говорит о том, что разработчики docker считают, что наиболее правильным в работе контейнеров использовать один процесс на один контейнер.
Всё верно. Это основная парадигма при использовании контейнеризации. Ноги растут из 12 factors. Можно одной картинкой
9fa5e46a57024980b1a291545b3ae530.png

В некоторых случаях можно от неё отходить - суть не догма. Это случаи когда в контейнере с приложением надо держать планировщик (crontab), утилиту мониторинга, либо что-то ещё не относящееся к основному процессу.

Подскажите, значит ли это, что если я хочу развернуть веб сервер то мне надо минимум 3 контейнера
Так и есть. Дальнейший запуск всех приложений осуществляется одной командой. Поскольку она получается довольно длинной (как будто Ява приложение запускаешь), предпочтительно использовать для этих целей docker-compose. Там единственный файл в формате yaml, в котором можно описать, что в какой последовательности запускать и в случае необходимости перезапускать, сколько и каких ресурсов железа выделять каждому приложению и много много ещё чего.

Или это все непринципиально и все можно сложить в один контейнер и будет работать так же хорошо.
Можно и так сделать. Правда проще и разумнее всего не заморачиваться в этом случае с контейнерами.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
1 СУБД
2 Вебсервер

Сайт распологается, обычно, вне контейнера.

Или

1 СУБД
2 Фронт
3 Веб-приложение, представляющее собой собранный образ. Чаще всего это приложения на nodejs, .net или python.
Ответ написан
Комментировать
Sanes
@Sanes
Еще логи в отдельный положи и конфиги. Это маразм. Настрой обычную виртуалку.
Ответ написан
Francyz
@Francyz
Photographer & SysAdmin
Это и без докера должно быть. Правила хорошего тона: скуль отдельно, сайт отдельно.
Ответ написан
@zlo1
MYSQL через UNIX-сокет быстрее работает, если все будет крутится на одном железе, не советую разделять

хотя... если сделать общедоступную папку (tmp) для контейнеров, то можно будет дать доступ к UNIX-сокету
Ответ написан
Комментировать
Для веб-приложения главным процессом является веб-сервер, обслуживающий запросы клиентов. Изолировать стоит лишь его, а подключать к СУБД и хранилищу файлов нужно за пределами контейнера.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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