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

Kørsel af migreringer med Rails i en Docker-container med flere containerforekomster

Især med Rails har jeg ingen erfaring, men lad os se fra et docker- og softwareteknisk synspunkt.

Docker-teamet går ind for, nogle gange ret aggressivt, at containere handler om forsendelsesapplikationer. I denne virkelig gode udtalelse , siger Jerome Petazzoni, at det hele handler om adskillelse af bekymringer. Jeg føler, at det er præcis det punkt, du allerede har fundet ud af.

At køre en rails-container, der starter en migrering eller opsætning, kan være godt til den første udrulning og sandsynligvis ofte påkrævet under udvikling. Men når du går i produktion, bør du virkelig overveje at adskille bekymringerne.

Derfor vil jeg sige, at du har ét billede, som du bruger til at køre N rails container og tilføje et værktøj/migrering/setup uanset container, som du bruger til at udføre administrative opgaver. Se, hvad udviklerne fra det officielle rails-billede sige om dette:

Når du ser på det billede, er der ingen opsætnings- eller migreringskommando. Det er helt op til brugeren, hvordan man bruger det. Så når du skal køre flere containere, skal du bare gå videre.

Fra min erfaring med mysql det her fungerer fint. Du kan køre en container kun til data for at være vært for dataene, køre en container med mysql-serveren og til sidst køre en container til administrative opgaver som backup og gendannelse. For alle tre beholdere kan du bruge det samme billede. Nu er du fri til at få adgang til din database fra lad os sige flere Wordpress containere. Det betyder en klar adskillelse af bekymringer. Når du bruger docker-compose det er ikke så svært at styre alle de containere. Der er bestemt allerede mange tredjeparts containere og værktøjer til også at understøtte dig med at opsætte en kompleks applikation bestående af flere containere.

Til sidst bør du beslutte om docker og mikrotjenestearkitekturen passer til dit problem. Som beskrevet i denne artikel der er nogle grunde imod. Et af kerneproblemerne er, at det tilføjer et helt nyt lag af kompleksitet. Det er dog tilfældet med mange løsninger, og jeg gætter på, at du er klar over dette og er villig til at undtage det.



  1. Sådan udføres en Oracle-lagret procedure via et databaselink

  2. Oracle Regexp for at erstatte \n,\r og \t med mellemrum

  3. Sådan automatiseres dataindsamling på SQL Server-databasevækst

  4. Arbejde med SQL-markører