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 サイトの他の関連記事を参照してください。