首頁 > 後端開發 > Golang > 如何使用 Docker Compose 和單獨的資料庫容器運行 Golang-Migrate?

如何使用 Docker Compose 和單獨的資料庫容器運行 Golang-Migrate?

Linda Hamilton
發布: 2024-12-06 13:06:14
原創
576 人瀏覽過

How to Run Golang-Migrate with Docker Compose and a Separate Database Container?

使用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 集成

要將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:

  • mydbuser 是PostgreSQL資料庫的使用者名稱
  • mydbpwd 是PostgreSQL 資料庫的密碼
  • database 是「db」服務中定義的別名
  • 5432 是PostgreSQL 的連接埠號碼資料庫
  • 5432 是PostgreSQL 的連接埠號碼資料庫
5432 是PostgreSQL 的連接埠號碼資料庫

5432 是PostgreSQL 的連接埠號碼資料庫

5432 是PostgreSQL 的連接埠號碼資料庫5432 是PostgreSQL 的連接埠號碼資料庫5432 是PostgreSQL 的連接埠號碼資料庫5432 是PostgreSQLSQL >mydbname 是PostgreSQL資料庫的名稱透過使用別名“database”,您可以連接到“db”服務,就像它在本機上運行一樣。 透過這些修改,您可以使用 docker-compose 成功執行 golang-migrate 並連接到另一個容器中的資料庫。

以上是如何使用 Docker Compose 和單獨的資料庫容器運行 Golang-Migrate?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板