sql >> Database >  >> RDS >> Mysql

Migraties uitvoeren met Rails in een Docker-container met meerdere containerinstanties

Vooral met Rails heb ik geen ervaring, maar laten we eens kijken vanuit een docker- en software-engineeringstandpunt.

Het Docker-team bepleit, soms behoorlijk agressief, dat containers over verzendtoepassingen gaan. In deze geweldige uitspraak , Jerome Petazzoni zegt dat het allemaal om scheiding van zorgen gaat. Ik heb het gevoel dat dit precies het punt is dat je al hebt bedacht.

Het uitvoeren van een rails-container die een migratie of configuratie start, kan goed zijn voor de eerste implementatie en waarschijnlijk vaak vereist tijdens de ontwikkeling. Wanneer u echter in productie gaat, moet u echt overwegen om de zorgen te scheiden.

Dus ik zou zeggen dat je één afbeelding hebt, die je gebruikt om de N rails-container uit te voeren en een tool/migratie/configuratie toe te voegen, welke container dan ook, die je gebruikt om administratieve taken uit te voeren. Kijk eens wat de ontwikkelaars van de officiële rails-afbeelding zeg hierover:

Als je naar die afbeelding kijkt, is er geen setup- of migratieopdracht. Het is geheel aan de gebruiker hoe deze te gebruiken. Dus als je meerdere containers moet gebruiken, ga je gang.

Uit mijn ervaring met mysql dit werkt prima. U kunt een container met alleen gegevens gebruiken om de gegevens te hosten, een container uitvoeren met de mysql-server en ten slotte een container uitvoeren voor administratieve taken zoals back-up en herstel. Voor alle drie de containers kunt u dezelfde afbeelding gebruiken. Nu bent u vrij om toegang te krijgen tot uw database vanuit laten we zeggen meerdere Wordpress containers. Dit betekent een duidelijke scheiding van zorgen. Wanneer u docker-compose . gebruikt het is niet zo moeilijk om al die containers te beheren. Er zijn zeker al veel containers en tools van derden om je ook te ondersteunen bij het opzetten van een complexe applicatie die uit meerdere containers bestaat.

Ten slotte moet u beslissen of docker en de microservice-architectuur geschikt is voor uw probleem. Zoals uiteengezet in dit artikel er zijn enkele redenen tegen. Een van de kernproblemen is dat het een geheel nieuwe laag van complexiteit toevoegt. Dat is echter het geval met veel oplossingen en ik neem aan dat u zich hiervan bewust bent en bereid bent om het uit te sluiten.



  1. Python+MySQLdb raar probleem

  2. Doctrine 2 Query Builder abs Functie

  3. MySQL dubbele master

  4. Kan ik een binaire tekenreeks opslaan in de CLOB-kolom?