Docker-compose 引入了一种新语法,不鼓励使用“--network”选项,该选项会阻止使用“--network”选项。提出了有关在此环境中使用 golang-migrate 运行迁移的问题。本文探讨如何使用 docker-compose 设置 golang-migrate 并连接到另一个容器中的数据库。
以下命令,如 golang 中所述-migrate 文档,可用于在一个文件夹中运行所有迁移:
docker run -v migration-dir:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
要将此语法适应 docker-compose,我们可以使用以下方法:
将以下配置添加到您的 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:
此配置设置一个名为“new”的新网络,并向其中添加了“db”和“migrate”服务。 “db”服务用作数据库,而“migrate”服务用于运行迁移。
而不是使用“--network host ”选项,我们建立一个网络并通过该网络内的别名“数据库”连接到数据库。这使得“migrate”服务能够与“db”服务交互,就像它在本地主机上运行一样。
“命令”部分中使用的连接字符串反映了此连接方法:
"postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable"
现在,运行 docker-compose up 应该成功执行迁移并连接到数据库容器。
以上是如何在没有'--network host”的情况下使用 Docker Compose 运行 Golang-Migrate 数据库迁移?的详细内容。更多信息请关注PHP中文网其他相关文章!