ホームページ >バックエンド開発 >Golang >デプロイ中に Docker Compose で単一実行コマンドを実行するにはどうすればよいですか?

デプロイ中に Docker Compose で単一実行コマンドを実行するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-08 18:57:02505ブラウズ

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

Docker Compose での単一実行コマンドの実行

Docker Compose を使用して Go Web サーバーを効率的にデプロイするには、ハードルが発生する場合があります。デプロイ中にコマンドを 1 回だけ実行しようとしたとき。この特定のコマンド ./my-project -setup は、プロジェクトがコンパイルされてデータベースに重要な情報が追加された後にのみ実行する必要があります。

Docker Compose は、このニーズに対する直接的な解決策を提供しません。ただし、コンテナにエントリポイント スクリプトを導入することでこれを回避できます。このスクリプト内で、データベースが初期化されているかどうかを確認するチェックを実装できます。初期化されていない場合は、必要な手順に進みます。

Docker Compose でコンテナが開始される順序に注意することが重要です。一貫性がありません。これは、アプリケーション コンテナがデータベース コンテナより前に起動される可能性があり、データベースの不正確さを引き起こす可能性があることを意味します。エントリポイント スクリプトはこの可能性を考慮し、それに応じて調整する必要があります。

たとえば、WordPress の公式イメージのアプローチからインスピレーションを得ることができます。このイメージでは、データベースへの接続の確立を試行し、接続ステータスに基づいて必要な初期化手順を実行するエントリポイント スクリプトを使用しています: https://github.com/docker-library/wordpress/blob/df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/docker-entrypoint .sh#L146-L171.

さらに、ボリュームのマウントに「データ専用コンテナ」の使用を排除することで、Docker Compose の構成を簡素化できます。 Docker 1.9 以降、Docker はボリュームの名前付けなどのボリューム管理をサポートしています。これにより、データ専用コンテナを除外し、それに応じて Mongo サービス構成を変更できます。

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

この変更により、「mongodata」という名前のボリュームが作成または再利用されます。ボリュームを一覧表示または削除するには、docker volume ls および docker volume rm コマンドを使用します。それぞれ。

以上がデプロイ中に Docker Compose で単一実行コマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。