Ответ 1
В частности, с Rails у меня нет опыта, но можно взглянуть с точки зрения докеров и программной инженерии.
Команда Docker защищает, иногда довольно агрессивно, что контейнеры касаются отгрузочных приложений. В это действительно отличное выражение, Джером Петаццони говорит, что речь идет обо всех проблемах. Я чувствую, что это именно то, что вы уже выяснили.
Запуск контейнера рельсов, который начинает миграцию или настройку, может быть полезен для первоначального развертывания и, вероятно, часто требуется во время разработки. Однако, при вводе в производство, вам действительно стоит рассмотреть вопрос о том, чтобы отделить проблемы.
Таким образом, я бы сказал, что есть одно изображение, которое вы используете для запуска контейнера N rails и добавляете инструменты/миграцию/настройку любого контейнера, который вы используете для выполнения административных задач. Посмотрите, что говорят разработчики из официального изображения рельсов:
Он предназначен для использования как в качестве контейнера для выброса (смонтируйте исходный код и запустите контейнер для запуска вашего приложения), так и базу для создания других изображений.
Когда вы смотрите на это изображение, нет команды настройки или миграции. Как пользователь может использовать его. Поэтому, когда вам нужно запустить несколько контейнеров, просто продолжайте.
Из моего опыта работы с mysql это прекрасно работает. Вы можете запустить контейнер только для данных для размещения данных, запустить контейнер с сервером mysql и, наконец, запустить контейнер для административных задач, таких как резервное копирование и восстановление. Для всех трех контейнеров вы можете использовать одно и то же изображение. Теперь вы можете получить доступ к своей базе данных, чтобы сказать несколько контейнеров Wordpress. Это означает четкое разделение проблем. Когда вы используете docker-compose
, управлять этими контейнерами не так сложно. Конечно, уже есть много сторонних контейнеров и инструментов, которые также помогут вам создать сложное приложение, состоящее из нескольких контейнеров.
Наконец, вы должны решить, подходит ли докер и архитектура микросервиса для вашей проблемы. Как указано в этой статье, есть некоторые причины. Одной из основных проблем является то, что он добавляет совершенно новый уровень сложности. Тем не менее, так обстоит дело со многими решениями, и я думаю, вы знаете об этом и соглашаетесь, кроме него.