Maison >développement back-end >Golang >Comment intégrer Golang-Migrate avec Docker Compose pour les migrations de bases de données ?

Comment intégrer Golang-Migrate avec Docker Compose pour les migrations de bases de données ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-06 04:05:22773parcourir

How to Integrate Golang-Migrate with Docker Compose for Database Migrations?

Intégration Docker-Compose pour Golang-Migrate

Golang-Migrate facilite la gestion de la migration des bases de données. Pour effectuer toutes les migrations depuis un répertoire, la commande suivante est suggérée :

docker run -v {{ migration dir }}:/migrations --network host migrate/migrate
-path=/migrations/ -database postgres://localhost:5432/database up 2

Cependant, cette commande ne correspond pas à la syntaxe du docker-compose mis à jour. Cet article explique comment modifier cette commande pour l'adapter à la nouvelle syntaxe Docker-Compose et se connecter à une base de données dans un conteneur différent.

Solution pour la nouvelle syntaxe Docker-Compose

L'extrait docker-compose.yml suivant permettra d'obtenir la fonctionnalité souhaitée :

    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:

Au lieu d'utiliser le --network option hôte, un réseau personnalisé nommé new est défini. Les services de ce réseau peuvent accéder les uns aux autres via des alias définis (par exemple, accéder au service de base de données via l'alias de base de données). Cela vous permet d'utiliser l'alias en remplacement de localhost dans les chaînes de connexion.

Connexion à une base de données externe

Cette chaîne de connexion est utilisée pour établir une connexion à un base de données exécutée dans un conteneur différent :

"postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable"

Dans cet exemple, l'alias de la base de données représente le conteneur de base de données externe.

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!

Déclaration:
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