首頁 >後端開發 >Golang >如何在部署期間在 Docker Compose 中執行單一執行命令?

如何在部署期間在 Docker Compose 中執行單一執行命令?

Linda Hamilton
Linda Hamilton原創
2024-11-08 18:57:02503瀏覽

How to Execute a Single-Execution Command in Docker Compose During Deployment?

在Docker Compose 中執行單一執行指令

為了使用Docker Compose 高效部署Go Web 伺服器,您可能會遇到障礙在部署期間嘗試僅執行一次命令時。這個特定的命令 ./my-project -setup 僅在專案編譯後才需要運行,以將基本資訊新增至資料庫。

Docker Compose 沒有為這種需求提供直接的解決方案,但您可以透過向容器引入入口點腳本來規避它。在此腳本中,您可以執行檢查以驗證資料庫是否已初始化,如果沒有,請繼續執行所需的步驟。

要注意的是,Docker Compose 中容器啟動的順序是不一致。這意味著應用程式容器可能會在資料庫容器之前啟動,這可能導致資料庫不準確。入口點腳本應該考慮這種可能性並進行相應調整。

例如,您可以從官方 WordPress 圖片的方法中汲取靈感。該映像使用入口點腳本嘗試建立與資料庫的連接,並根據連接狀態執行必要的初始化過程:https://github.com/docker-library/wordpress/blob/df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/docker-14836bd2bdcd09ee379a5/apache/docker-1483. -L171.

此外,您可以透過消除使用「僅資料容器」來安裝磁碟區來簡化Docker Compose 配置。從 Docker 1.9 開始,Docker 支援磁碟區管理,包括命名磁碟區。這允許您排除僅資料容器並相應地修改 Mongo 服務配置:

mongo:
    image: mongo:latest
    volumes:
      - mongodata:/data/db
    ports:
      - "28001:27017"
    command: --smallfiles --rest --auth

此修改將建立或重複使用名為「mongodata」的磁碟區。若要列出或刪除卷,請使用指令 dockervolume ls 和 dockervolume rm ;分別。

以上是如何在部署期間在 Docker Compose 中執行單一執行命令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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