首頁 >後端開發 >Golang >如何在 Docker Compose 中執行一次性指令?

如何在 Docker Compose 中執行一次性指令?

Susan Sarandon
Susan Sarandon原創
2024-11-16 05:20:03477瀏覽

How to Execute a One-Time Command in Docker Compose?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn