gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:56:19 26 4
gpt4 key购买 nike

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

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

您将如何执行此操作以适应新的 docker-compose 的语法,它不鼓励使用 --network

更重要的是:您将如何连接到另一个容器中的数据库,而不是连接到本地主机中运行的数据库?

最佳答案

将此添加到您的 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:

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

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

关于database - 如何使用 docker-compose 运行 golang-migrate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55779979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com