Mysql
 sql >> Database >  >> RDS >> Mysql

Esecuzione di migrazioni con Rails in un container Docker con più istanze di container

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.