Специално с Rails нямам никакъв опит, но нека погледнем от гледна точка на докер и софтуерно инженерство.
Екипът на Docker застъпва, понякога доста агресивно, че контейнерите са свързани с приложения за доставка. В това наистина страхотно изявление , Джером Петацони казва, че всичко е за разделяне на притесненията. Чувствам, че това е точно точката, която вече разбрахте.
Пускането на rails контейнер, който стартира миграция или настройка, може да е добро за първоначално внедряване и вероятно често се изисква по време на разработката. Въпреки това, когато влизате в производство, наистина трябва да помислите за разделяне на опасенията.
По този начин бих казал да имате едно изображение, което използвате, за да стартирате N rails контейнер и да добавите инструменти/миграция/настройка какъвто и да е контейнер, който използвате за извършване на административни задачи. Вижте какво са разработчиците от официалното изображение на релсите кажете за това:
Когато погледнете това изображение, няма команда за настройка или миграция. Изцяло зависи от потребителя как да го използва. Така че, когато трябва да стартирате няколко контейнера, продължете напред.
От моя опит с mysql това работи добре. Можете да стартирате контейнер само за данни, за да хоствате данните, да стартирате контейнер със сървъра mysql и накрая да стартирате контейнер за административни задачи като архивиране и възстановяване. И за трите контейнера можете да използвате едно и също изображение. Сега имате свободен достъп до вашата база данни от да кажем няколко Wordpress контейнери. Това означава ясно разделяне на притесненията. Когато използвате docker-compose
не е толкова трудно да се управляват всички тези контейнери. Със сигурност вече има много контейнери и инструменти на трети страни, които също да ви подкрепят при настройването на сложно приложение, състоящо се от няколко контейнера.
Накрая трябва да решите дали docker и архитектурата на микро услуги е подходящ за вашия проблем. Както е посочено в тази статия има някои причини против. Един от основните проблеми е, че добавя изцяло нов слой сложност. Такъв е случаят обаче с много решения и предполагам, че сте наясно с това и сте готови да го изключите.