Maison > développement back-end > Golang > Comment exécuter Golang-Migrate avec Docker Compose et un conteneur de base de données séparé ?

Comment exécuter Golang-Migrate avec Docker Compose et un conteneur de base de données séparé ?

Linda Hamilton
Libérer: 2024-12-06 13:06:14
original
604 Les gens l'ont consulté

How to Run Golang-Migrate with Docker Compose and a Separate Database Container?

Exécuter Golang-Migrate avec Docker Compose

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
Copier après la connexion

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.

Intégration Docker-Compose

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:
Copier après la connexion

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.

Connexion à une base de données dans un autre conteneur

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
Copier après la connexion

A ce propos string :

  • mydbuser est le nom d'utilisateur de la base de données PostgreSQL
  • mydbpwd est le mot de passe de la base de données PostgreSQL
  • la base de données est l'alias défini dans le service "db"
  • 5432 est le numéro de port de PostgreSQL base de données
  • mydbname est le nom de la base de données PostgreSQL

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal