Golang-Migrate 的 Docker-Compose 集成
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 语法并连接到不同容器中的数据库。
新 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:
而不是使用 --network 主机选项,定义了一个名为 new 的自定义网络。该网络内的服务可以通过定义的别名相互访问(例如,通过数据库别名访问 db 服务)。这允许您在连接字符串中使用别名替换 localhost。
连接到外部数据库
此连接字符串用于建立到在不同容器中运行的数据库:
"postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable"
在此示例中,数据库别名代表外部数据库容器。
以上是如何将 Golang-Migrate 与 Docker Compose 集成以进行数据库迁移?的详细内容。更多信息请关注PHP中文网其他相关文章!