Soprattutto con Rails non ho alcuna esperienza, ma guardiamo da un punto di vista della finestra mobile e dell'ingegneria del software.
Il team di Docker sostiene, a volte in modo piuttosto aggressivo, che i container riguardano le applicazioni di spedizione. In questa affermazione davvero fantastica , Jerome Petazzoni dice che si tratta solo di separare le preoccupazioni. Sento che questo è esattamente il punto che hai già capito.
L'esecuzione di un container rails che avvia una migrazione o una configurazione potrebbe essere utile per la distribuzione iniziale e probabilmente spesso necessaria durante lo sviluppo. Tuttavia, quando entri in produzione, dovresti davvero considerare di separare le preoccupazioni.
Quindi direi di avere un'immagine, che usi per eseguire il container N rails e aggiungere uno strumento/migrazione/configurazione qualunque contenitore, che usi per svolgere attività amministrative. Dai un'occhiata agli sviluppatori dall'immagine ufficiale dei binari dire su questo:
Quando guardi quell'immagine non c'è alcun comando di installazione o migrazione. Dipende totalmente dall'utente come usarlo. Quindi, quando devi eseguire più container, vai avanti.
Dalla mia esperienza con mysql questo funziona bene. Puoi eseguire un contenitore di soli dati per ospitare i dati, eseguire un contenitore con il server mysql e infine eseguire un contenitore per attività amministrative come backup e ripristino. Per tutti e tre i contenitori puoi usare la stessa immagine. Ora sei libero di accedere al tuo database da, diciamo, diversi Wordpress contenitori. Ciò significa una chiara separazione delle preoccupazioni. Quando usi docker-compose
non è così difficile gestire tutti quei container. Certamente esistono già molti contenitori e strumenti di terze parti per supportarti anche nella configurazione di un'applicazione complessa composta da più contenitori.
Infine, dovresti decidere se docker e l'architettura di microservizi è giusto per il tuo problema Come indicato in questo articolo ci sono alcune ragioni contro. Uno dei problemi principali è che aggiunge un nuovo livello di complessità. Tuttavia, questo è il caso di molte soluzioni e immagino che tu ne sia consapevole e disposto ad escluderlo.