在Docker Compose 中執行一次性命令
在Docker compose 的上下文中,您尋求一種解決方案來執行特定命令( ./my-project -setup) 僅一次,無論容器是否重新啟動或部署。在需要初始化或資料設定的情況下就會出現這種需求。
要解決此問題,請考慮在容器中實作入口點腳本。該腳本將處理檢查資料庫是否已初始化的任務。如果沒有,腳本將執行所需的初始化步驟。
需要注意的是,無法保證容器啟動順序,因此應用程式容器可能會先於資料庫容器啟動。為了解決這個問題,腳本應該包含處理此類事件的邏輯。
這種方法的範例可以在官方 WordPress 映像中找到(https://github.com/docker-library/wordpress/blob/df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/#Lentrydcd09ee379a5/apache/#Lentrydcd09該腳本嘗試連接到資料庫並檢查是否需要初始化,如果資料庫尚不可訪問,則重試。
最佳化捲管理
在您的初始 Docker 組合中檔案中,您使用了「僅資料」容器來附加您的磁碟區。然而,現代版本的 Docker(1.9 及更高版本)提供了捲管理功能。這消除了對單獨的僅資料容器的需要。
您可以透過刪除僅資料容器並修改mongo 服務來簡化Docker 撰寫文件,如下所示:
mongo: image: mongo:latest volumes: - mongodata:/data/db ports: - "28001:27017" command: --smallfiles --rest --auth
此設定將建立一個名為mongodata 的磁碟區(如果它尚不存在),或將重複使用具有該名稱的現有磁碟區。您可以使用指令 dockervolume ls forlisting 和 dockervolume rm
以上是如何在 Docker Compose 中執行一次性指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!