Golang-migrate 的文件提供了用於在給定目錄中執行所有遷移的命令:
docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
但是,此指令與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:
以上是如何使用 Docker Compose 和單獨的資料庫容器運行 Golang-Migrate?的詳細內容。更多資訊請關注PHP中文網其他相關文章!