データ依存プロセスのために Docker Compose でコマンドを 1 回実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-10 01:19:02
オリジナル
312 人が閲覧しました

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

Docker Compose でコマンドを一度実行する

概要

Docker compose を使用すると、複数のコンテナを 1 つのユニットとして管理できます。ただし、特にデータベースのセットアップなどのデータに依存するプロセスを扱う場合、コマンドを 1 回だけ実行するのは難しい場合があります。

データ ボリューム コンテナについて

作成ファイルで、 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 でコマンドを 1 回実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート