Maison >développement back-end >Golang >Comment exécuter des migrations de bases de données Golang-Migrate avec Docker Compose sans « --network host » ?
Docker-compose a introduit une nouvelle syntaxe qui décourage l'utilisation de l'option "--network", qui soulève des questions sur l'exécution de migrations à l'aide de golang-migrate dans cet environnement. Cet article explique comment configurer golang-migrate avec docker-compose et se connecter à une base de données dans un autre conteneur.
La commande suivante, telle qu'indiquée dans le fichier golang -migrate documentation, peut être utilisé pour exécuter toutes les migrations dans un seul dossier :
docker run -v migration-dir:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
Pour adapter cette syntaxe à docker-compose, nous pouvons utiliser le approche suivante :
Ajoutez la configuration suivante à votre fichier docker-compose.yml :
db: image: postgres networks: new: aliases: - database environment: POSTGRES_DB: mydbname POSTGRES_USER: mydbuser POSTGRES_PASSWORD: mydbpwd ports: - "5432" migrate: image: migrate/migrate networks: - new volumes: - .:/migrations command: ["-path", "/migrations", "-database", "postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable", "up", "3"] links: - db networks: new:
Cette configuration configure un nouveau réseau appelé "new" et y ajoute les services "db" et "migrate". Le service "db" sert de base de données, tandis que le service "migrate" est utilisé pour exécuter des migrations.
Au lieu d'utiliser l'hôte "--network ", nous établissons un réseau et nous connectons à la base de données via son alias, "base de données", au sein de ce réseau. Cela permet au service « migrate » d'interagir avec le service « db » comme s'il s'exécutait sur localhost.
La chaîne de connexion utilisée dans la section « command » reflète cette méthode de connexion :
"postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable"
Maintenant, l'exécution de docker-compose up devrait exécuter avec succès les migrations et se connecter au conteneur de base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!