La documentation de Golang-migrate fournit une commande pour exécuter toutes les migrations dans un répertoire donné :
docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
Cependant, cette commande n'est pas compatible avec la syntaxe de docker-compose. Cet article montrera comment modifier la commande pour l'adapter à la nouvelle syntaxe et se connecter à une base de données exécutée dans un autre conteneur.
Pour intégrer golang-migrate avec docker-compose, ajoutez ce qui suit à 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 crée un réseau nommé "new" et inclut la "db" et services « migrer ». Le service "db" est défini avec les variables d'environnement requises pour une base de données PostgreSQL.
Pour vous connecter à une base de données exécutée dans un autre conteneur, modifiez la chaîne de connexion dans l'attribut "command" du service "migrate":
postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable
A ce propos string :
En utilisant l'alias "database", vous pouvez vous connecter au service "db" comme s'il s'exécutait sur localhost.
Avec ces modifications, vous pouvez exécuter avec succès golang-migrate avec docker-compose et vous connecter à une base de données dans un autre conteneur.
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!