Golang-migrate 的文档提供了用于在给定目录中执行所有迁移的命令:
docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
但是,该命令与 docker-compose 的语法不兼容。本文将演示如何修改命令以适应新语法并连接到在另一个容器中运行的数据库。
要将 golang-migrate 与 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”和“迁移”服务。 “db”服务使用 PostgreSQL 数据库所需的环境变量进行定义。
要连接到另一个容器中运行的数据库,请修改连接字符串在“迁移”服务的“命令”属性中:
postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable
就此而言string:
通过使用别名“database”,您可以连接到“db”服务,就像它在本地主机上运行一样。
通过这些修改,您可以使用 docker-compose 成功运行 golang-migrate 并连接到另一个容器中的数据库。
以上是如何使用 Docker Compose 和单独的数据库容器运行 Golang-Migrate?的详细内容。更多信息请关注PHP中文网其他相关文章!