利用 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 语法不鼓励使用 --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-compose 中建立,允许服务使用别名进行通信。在提供的配置中,您可以通过数据库别名访问db服务。
连接字符串进行相应修改:
postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable
通过这些调整,您可以在golang中成功执行迁移-使用 docker-compose 进行迁移,建立与另一个容器中的数据库的连接。
以上是如何使用'golang-migrate”和 Docker Compose 进行数据库迁移?的详细内容。更多信息请关注PHP中文网其他相关文章!