40 votes

Migrations EF Core dans le conteneur Docker

Je suis en train d'ouvrir un WebApi dans .NET Core 2.0. Je serai à l'aide de Entity Framework Core comme ORM. Ensemble de l'application sera déployée en tant que Conteneur Docker. La chose qui me dérange un peu est le moyen de manipulation DB migrations dans ce cas. Je veux dire de l'environnement de PRODUCTION. Voici ce que j'ai réussi à la recherche:

  • Nous venons de feu la Base de données.Migrer() dans l'application de commencer à oublier le monde entier - hmm, quelque part, je ne l'aime pas ;-)
  • La base de données.Migrer (), porté par une ligne de commande param (exécuter le panneau contenant une fois avec un certain param migrer DB)
  • Ouvrez une session dans le conteneur de l'application et d'exécuter dotnet ef database update
  • Générer la plaine de vieux SQL basé sur les migrations et l'exécuter à partir de DB outil de gestion. Semble oldschool mais valide. La chose que je déteste est à gâcher avec de l'exécution de scripts sur mon propre.
  • Préparer une Base de données contenant déjà des scripts générés à partir de code ci-dessus, et qui serait automatiquement les exécuter.

Toutes les autres suggestions ? Ou ce qui est la meilleure, la plus la bonne solution ?

Ce qui concerne

2voto

Leonhard Points 29

à mon avis, c'est votre premier point de données (Base de données.Migrer() en raison de démarrage) qui répond à la plupart de nos cas d'utilisation. Donc pour moi c'est actuellement la meilleure façon de le faire.

Nous avons quelques autres constellations dans le démarrage du processus:

  • Conteneur Docker localement uniquement pour environnement de dev et de tests pour vous en assurer)
  • Démarrage de votre propre projet, qui exécute la Base de données.Migrer() partie (à cause que nous n'avons plus d'un projet avec sa propre base de données)
  • Supplémentaire du projet avec la réalité de l'API site web :)
  • Environnement de Production avec Azure SQL server (Publié et exécuté par l'entremise d'Azur DevOps pipeline

  • Les Migrations sont créés dans son propre projet via dotnet ef ...

    dotnet ef migrations ajouter "votre nom de migration" --démarrage du projet "chemin d'accès à votre réalité d'API" --contexte "contexte de base de données nom de"

Important: vous devez changer le répertoire de travail pour le projet de migration d'abord, afin d'utiliser le démarrage d'un autre projet, mais de générer les fichiers de migration dans le "projet de migration"

Dans notre cas, il fonctionne très bien avec les Api différentes avec leurs propres bases de données derrière la szene.

Ce qui concerne

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X