Docker Compose でエントリポイント スクリプトを使用してワンタイム コマンドを実行する方法

Susan Sarandon
リリース: 2024-11-11 16:57:03
オリジナル
514 人が閲覧しました

How to Execute One-Time Commands in Docker Compose with Entrypoint Scripts?

Docker Compose でワンタイム コマンドを実行する方法

コマンドを 1 回だけ実行する必要がある Docker 環境をセットアップするには、データベースの作成など、エントリポイントを利用することをお勧めします。 script.

Entrypoint Script

コンテナ イメージ内にエントリポイント スクリプトを作成します (通常は、entrypoint.sh という名前)。このスクリプトはデータベースの初期化が完了したかどうかを確認し、完了していない場合は必要なアクションを実行します。

これは、WordPress の公式イメージに基づくエントリポイント スクリプトの例です:

#!/bin/bash

set -e

# Function to check if database initialization is needed
is_init_needed() {
  # Insert database initialization check logic here
  return 0
}

# Check if initialization is needed
if is_init_needed; then
  # Perform database initialization
  echo "Initializing database..."
  /usr/bin/mysql -u "root" -p"$MYSQL_ROOT_PASSWORD" -h "mysql" < /usr/local/init.sql
  echo "Database initialized successfully."
fi

# Start the application
exec "$@"
ログイン後にコピー

Docker Compose 構成

docker-compose.yml ファイルで、エントリポイント スクリプトを指定します。次のように、初期化が必要なサービスのエントリポイント キー:

services:
  my_project:
    build: .
    entrypoint: ["./entrypoint.sh"]
    ...
ログイン後にコピー

追加メモ

  • 回答で述べたように、「データ専用コンテナー」を使用します。 Docker ボリューム管理の「」は、Docker 1.9 以降では古くなりました。代わりに、ボリューム キーを使用してボリュームをサービスに直接接続できます。
  • エントリポイント スクリプトでは、アプリケーション コンテナの後にデータベース コンテナが開始される可能性を考慮する必要があります。
  • Docker Compose は厳密な規則に従います。サービス開始時の注文。 my_project サービスは、依存関係 (mongo および mongodata) の準備が整うまで開始されません。

以上がDocker Compose でエントリポイント スクリプトを使用してワンタイム コマンドを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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