Docker compose 可讓您將多個容器作為一個單元進行管理。但是,僅執行一次命令可能具有挑戰性,尤其是在處理依賴資料的流程(例如設定資料庫)時。
在您的撰寫檔案中,您已建立用於儲存 MongoDB 資料的「mongodata」資料卷容器。該容器本質上是一個暫停的容器,只是掛載指定的磁碟區。
一次初始化的入口點腳本:
為了防止「-setup」指令多次執行,您可以在在「my_project」容器中使用入口點腳本。此腳本將檢查資料庫是否已初始化,並僅在必要時執行設定。
範例:
#!/bin/sh # Check if database is initialized if test -f /app/initialized; then # Database already initialized, skip setup echo "Database already initialized" else # Initialize database ./my-project -setup touch /app/initialized fi # Start the application exec /go/bin/my_project
Docker 1.9 及更高版本提供本機捲管理功能,消除了對「僅數據”容器的需求。您可以如下簡化撰寫文件:
services: mongo: image: mongo:latest volumes: - mongodata:/data/db ports: - "28001:27017" command: --smallfiles --rest --auth
在入口點腳本中,處理資料庫可用性中的潛在延遲至關重要。如果資料庫尚不可訪問,腳本應重試連接。
以上是如何在 Docker Compose 中為資料相關進程執行一次命令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!