Docker-compose 引入了一種新語法,不鼓勵使用「--network」選項,該選項會阻止使用“--network”選項。提出了有關在此環境中使用 golang-migrate 運行遷移的問題。本文探討如何使用 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.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」和「migrate」服務。 「db」服務用作資料庫,而「migrate」服務用於運行遷移。
而不是使用「--network host 」選項,我們建立一個網路並透過該網路內的別名「資料庫」連接到資料庫。這使得“migrate”服務能夠與“db”服務交互,就像它在本地主機上運行一樣。
「命令」部分中使用的連接字串反映了此連接方法:
"postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable"
現在,運行 docker-compose up 應該會成功執行遷移並連接到資料庫容器。
以上是如何在沒有「--network host」的情況下使用 Docker Compose 執行 Golang-Migrate 資料庫遷移?的詳細內容。更多資訊請關注PHP中文網其他相關文章!