eruditecat
@eruditecat
Красноглазик

Правильно ли я понял философию Docker?

Я только-только начал вникать в Docker, и мне понравилось. Но прежде чем создать свой первый рабочий стек, я хотел бы удостовериться, что я правильно всё понял. Вот как я вижу вижу веб-приложение, которое работает на связке nginx + Node.js + MongoDB:
  1. nginx
    • HTTP-сервер
    • Конфиг
    • Логи
  2. Node.js
    • Движок (сам Node.js)
    • Исходный код приложения
    • npm-модули
      • Глобальные
      • Локальные
    • Конфиг приложения
    • Логи
  3. MongoDB
    • Сервер СУБД
    • Базы данных
    • Конфиг
    • Логи

Как это будет в Docker:
  1. Образы
    1. nginx
    2. Node.js и глобальные npm-модули
    3. Исходный код и локальные npm-модули (или лучше это в предыдущий контейнер, и при старте выполнять npm install?)
    4. СУБД
  2. Контейнеры данных
    1. Базы данных
  3. На файловой системе хоста
    1. Логи (но, я так понимаю, это немного нарушает принцип изолированности. Если так, то куда их? В отдельный контейнер?)
    2. Все конфиги (или лучше разместить конфигурацию в Dockerfile полностью?)

Допустил ли я где-нибудь ошибки? Не могли бы ли вы поправить меня в 1.c., 3.a., 3.b.?
  • Вопрос задан
  • 3473 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Контейнеры данных


Они не нужны, используйте named volumes вместо этого (с версии 1.9 докера).

Исходный код и локальные npm-модули (или лучше это в предыдущий контейнер, и при старте выполнять


Нет, npm install надо выполнять ДО сборки образа. Когда контейнер стартует - внутри у него уже все должно быть. Опять же я лично против того, что бы выносить исходники проекта в отдельный контейнер-пустышку. У вас есть контейнер с нодой - исходники для ноды должны быть там. Есть некоторые нюансы связанные со сборкой контейнера но это так.

На файловой системе хоста


Ничего.

Логи прокидываются в stdout/stderr контейнера и собираются на хосте через докер любым подходящим драйвером (читаем документацию).

Конфигурация - все что в конфигах от окружения к окружению меняется - в ENV переменные. Все остальное - не меняется и потому просто вшито внутрь контейнера.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Acme Crypto Corp Нижний Новгород
от 80 000 до 140 000 руб.
Evry Санкт-Петербург
от 2 000 до 2 300 usd.
Simplanum Казань
от 60 000 до 140 000 руб.
22 февр. 2019, в 14:57
800 руб./в час
22 февр. 2019, в 14:54
8500 руб./за проект
22 февр. 2019, в 14:29
1000 руб./за проект