首頁 > 後端開發 > Golang > 主體

如何在 Docker Compose 中為資料相關進程執行一次命令?

Susan Sarandon
發布: 2024-11-10 01:19:02
原創
311 人瀏覽過

How to Run a Command Once in Docker Compose for Data-Dependent Processes?

在 Docker Compose 中執行一次指令

簡介

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板