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