如何使用docker-compose运行golang-migrate?

问题描述 投票:1回答:1

在golang-migrate的文档中,声明可以运行此命令来在一个文件夹中运行所有迁移。

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

你会如何做到这一点,以适应新的docker-compose的语法,这会阻碍使用--network

更重要的是:如何连接到另一个容器中的数据库而不是连接到localhost中的数据库?

database docker go migration
1个回答
2
投票

将它添加到你的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:

而不是使用--network hostdocker run选项,你建立了一个名为new的网络。该网络内的所有服务都通过定义的别名相互访问(在上面的示例中,您可以通过database别名访问数据库服务)。然后,您可以像使用localhost一样使用该别名,即代替IP地址。这解释了这个连接字符串:

"postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable"
© www.soinside.com 2019 - 2024. All rights reserved.