Zwłaszcza z Railsami nie mam żadnego doświadczenia, ale spójrzmy z punktu widzenia dokera i inżynierii oprogramowania.
Zespół Dockera opowiada się, czasami dość agresywnie, że kontenery dotyczą aplikacji wysyłkowych. W to naprawdę świetne stwierdzenie Jerome Petazzoni mówi, że chodzi o oddzielenie obaw. Czuję, że jest to dokładnie ten punkt, który już odkryłeś.
Uruchomienie kontenera Rails, który uruchamia migrację lub konfigurację, może być dobre do początkowego wdrożenia i prawdopodobnie często wymagane podczas programowania. Jednak przechodząc do produkcji, naprawdę powinieneś rozważyć oddzielenie obaw.
Zatem powiedziałbym, że masz jeden obraz, którego używasz do uruchamiania kontenera N rails i dodajesz narzędzia/migrację/konfigurację dowolnego kontenera, którego używasz do wykonywania zadań administracyjnych. Zobacz, co programiści z oficjalnego obrazu rails powiedz o tym:
Kiedy patrzysz na ten obraz, nie ma polecenia konfiguracji ani migracji. Całkowicie zależy od użytkownika, jak z niego korzystać. Więc jeśli potrzebujesz uruchomić kilka kontenerów, po prostu śmiało.
Z mojego doświadczenia z mysql to działa dobrze. Możesz uruchomić kontener tylko do danych, aby przechowywać dane, uruchomić kontener z serwerem mysql i wreszcie uruchomić kontener do zadań administracyjnych, takich jak tworzenie kopii zapasowych i przywracanie. Dla wszystkich trzech kontenerów możesz użyć tego samego obrazu. Teraz masz swobodny dostęp do swojej bazy danych z, powiedzmy, kilku Wordpress pojemniki. Oznacza to wyraźne oddzielenie obaw. Kiedy używasz docker-compose
zarządzanie wszystkimi tymi kontenerami nie jest takie trudne. Z pewnością istnieje już wiele kontenerów i narzędzi innych firm, które pomogą Ci również w skonfigurowaniu złożonej aplikacji składającej się z kilku kontenerów.
Na koniec zdecyduj, czy dok i architektura mikrousług jest odpowiedni dla twojego problemu. Jak opisano w tym artykule istnieją pewne powody przeciwko temu. Jednym z głównych problemów jest to, że dodaje zupełnie nową warstwę złożoności. Tak jest jednak w przypadku wielu rozwiązań i myślę, że jesteś tego świadomy i chcesz to wykluczyć.