sql >> Databasteknik >  >> RDS >> Mysql

Köra migreringar med Rails i en Docker-container med flera containerinstanser

Speciellt med Rails har jag ingen erfarenhet, men låt oss titta ur en docknings- och mjukvaruteknisk synvinkel.

Docker-teamet förespråkar, ibland ganska aggressivt, att containrar handlar om fraktapplikationer. I det här riktigt bra uttalandet , säger Jerome Petazzoni att det handlar om separation av bekymmer. Jag känner att det är precis den punkten du redan har listat ut.

Att köra en rails-container som startar en migrering eller installation kan vara bra för den initiala driftsättningen och förmodligen ofta krävs under utveckling. Men när du går i produktion bör du verkligen överväga att separera bekymmer.

Så jag skulle säga ha en bild, som du använder för att köra N rails container och lägga till ett verktyg/migrering/setup vilken container som helst, som du använder för att utföra administrativa uppgifter. Ta en titt på utvecklarna från den officiella rails-bilden säga om detta:

När du tittar på den bilden finns det inget setup- eller migreringskommando. Det är helt upp till användaren hur man använder det. Så när du behöver köra flera containrar är det bara att gå vidare.

Från min erfarenhet av mysql det här fungerar bra. Du kan köra en endast databehållare för att vara värd för data, köra en behållare med mysql-servern och slutligen köra en behållare för administrativa uppgifter som säkerhetskopiering och återställning. För alla tre behållare kan du använda samma bild. Nu är du fri att komma åt din databas från låt oss säga flera Wordpress behållare. Detta innebär tydlig åtskillnad av bekymmer. När du använder docker-compose det är inte så svårt att hantera alla dessa containrar. Visst finns det redan många tredjepartsbehållare och verktyg för att också stödja dig med att sätta upp en komplex applikation som består av flera behållare.

Slutligen bör du bestämma om docker och mikrotjänstarkitekturen är rätt för ditt problem. Som beskrivs i denna artikel det finns några skäl emot. Ett av kärnproblemen är att det lägger till ett helt nytt lager av komplexitet. Det är dock fallet med många lösningar och jag antar att du är medveten om detta och är villig att undanta det.



  1. Hur löser man tvetydiga kolumnnamn när man hämtar resultat?

  2. Beräkna delta (skillnaden mellan nuvarande och föregående rad) i sql

  3. SQL-valsfråga med funktioner för kopplingar, gruppera efter och aggregerade

  4. Hur skriver man UPPDATERA SQL med tabellalias i SQL Server 2008?