Maison >développement back-end >Golang >Comment exécuter des migrations de bases de données avec Go et Docker Compose après la dépréciation de « --network host » ?

Comment exécuter des migrations de bases de données avec Go et Docker Compose après la dépréciation de « --network host » ?

DDD
DDDoriginal
2024-12-16 11:20:10123parcourir

How to Run Database Migrations with Go and Docker Compose After the `--network host` Deprecation?

Migrer des bases de données avec Go et Docker-Compose

L'exécution de migrations à l'aide de l'outil golang-migrate peut aider à garantir la cohérence du schéma de base de données. Cependant, avec la dépréciation de --network host dans Docker-Compose, vous pourriez rencontrer des difficultés lors de l'exécution des migrations. Cet article explique comment s'adapter à la syntaxe mise à jour et comment se connecter à une base de données résidant dans un conteneur séparé.

Adapter à la nouvelle syntaxe Docker-Compose

Pour exécuter migrations sans --network host, vous pouvez ajouter 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:

Dans cette configuration, un réseau appelé new est créé et le service migrate est lié au service db via l'alias de base de données.

Connexion à une base de données distante

Pour se connecter à une base de données dans un conteneur séparé, utilisez le format suivant dans la chaîne de connexion :

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

Ici, la base de données est l'alias défini dans la configuration réseau. Cela vous permet de vous connecter à la base de données distante comme si elle s'exécutait localement.

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