Zejména s Rails nemám žádné zkušenosti, ale podívejme se z pohledu dockeru a softwarového inženýrství.
Tým Docker obhajuje, někdy až agresivně, že kontejnery jsou o přepravních aplikacích. V toto opravdu skvělé prohlášení Jerome Petazzoni říká, že je to všechno o oddělení starostí. Mám pocit, že to je přesně ten bod, na který jste již přišli.
Spuštění kontejneru rails, který spouští migraci nebo nastavení, může být dobré pro počáteční nasazení a pravděpodobně často vyžadováno během vývoje. Když se však pustíte do výroby, měli byste skutečně zvážit oddělení obav.
Takže bych řekl, že máte jeden obrázek, který používáte ke spuštění kontejneru N rails a přidejte kontejner nástrojů/migraci/nastavení, který používáte k provádění administrativních úkolů. Podívejte se, co vývojáři z oficiálního obrázku rails říci o tomto:
Když se podíváte na tento obrázek, není tam žádný příkaz k nastavení nebo migraci. Je zcela na uživateli, jak jej využije. Takže když potřebujete spustit několik kontejnerů, pokračujte.
Z mé zkušenosti s mysql tohle funguje dobře. Můžete spustit kontejner pouze pro data pro hostitele dat, spustit kontejner se serverem mysql a nakonec spustit kontejner pro administrativní úlohy, jako je zálohování a obnova. Pro všechny tři kontejnery můžete použít stejný obrázek. Nyní máte volný přístup ke své databázi řekněme z několika Wordpress kontejnery. To znamená jasné oddělení obav. Když použijete docker-compose
není tak těžké spravovat všechny ty kontejnery. Jistě již existuje mnoho kontejnerů a nástrojů třetích stran, které vám také pomohou s nastavením komplexní aplikace sestávající z několika kontejnerů.
Nakonec byste se měli rozhodnout, zda docker a architekturu mikroslužeb je to pravé pro váš problém. Jak je uvedeno v tomto článku existuje několik důvodů proti. Jedním z hlavních problémů je, že přidává zcela novou vrstvu složitosti. To je však případ mnoha řešení a myslím, že jste si toho vědomi a jste ochotni to vynechat.