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中文網其他相關文章!