首页 > 后端开发 > Golang > 如何将 Golang-Migrate 与 Docker Compose 集成以进行数据库迁移?

如何将 Golang-Migrate 与 Docker Compose 集成以进行数据库迁移?

Barbara Streisand
发布: 2024-12-06 04:05:22
原创
752 人浏览过

How to Integrate Golang-Migrate with Docker Compose for Database Migrations?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板