Compose を 本番環境 で使う¶
開発環境で Compose を使ってアプリケーションを定義しておけば、その設定を使い、アプリケーションを CI 、ステージング、本番環境のように異なる環境で実行できます。
アプリケーションをデプロイする最も簡単な方法は、単一サーバ上での実行です。これは開発環境で実行する方法と似ています。アプリケーションをスケールアップしたい場合には、Compose アプリを Swarm クラスタ上で実行できます。
Compose ファイルを本番環境向けに書き換え¶
アプリケーションの設定を本番環境に適用するには、おそらく書き換えが必要でしょう。以下のような変更が必要になるかもしれません:
アプリケーションのコードに
結び付けている ボリュームを削除する。そのため、コードはコンテナ内に残り続けるため、外から変更できなくなる。ホスト上では異なるポートに割り当てる
コンテナのコードを外から変更できなくするため、アプリケーション・コード用に割り当てたボリュームを削除する。
ホストに異なったポートを割り当てる。
異なった環境変数を割り当てる。たとえば、冗長なログの出力を減らす、あるいは、メールサーバのような外部サービスへの設定を指定する。
再起動ポリシーを指定し(例:
restart: always
)、停止時間を減らす外部サービスの追加(例:ログ収集)
このような理由のため、production.yml
のような追加 Compose ファイルを使い、プロダクションに相応しい設定を定義したくなるでしょう。この設定ファイルには、元になった Compose ファイルからの変更点のみ記述できます。追加の Compose ファイルは、元の docker-compose.yml
の設定を上書きする新しい設定を指定できます。
2つめの設定ファイルを使うには、Compose で -f
オプションを使います。
$ docker-compose -f docker-compose.yml -f production.yml up -d
詳細は例は 複数のComposeファイルを使用 をご覧ください。
変更のデプロイ¶
アプリケーションのコードを変更した時は、イメージを再構築し、アプリケーションのコンテナを作り直す必要があります。web
という名称のサービスを再デプロイするには、次のように実行します。
$ docker-compose build web
$ docker-compose up --no-deps -d web
これは、まず web
イメージを再構築するために(コンテナを)停止・破棄します。それから web
サービス のみ 再作成します。--no-deps
フラグを使うことで、Compose が web
に依存するサービスを再作成しないようにします。
単一サーバ上でのコンテナ実行¶
Compose を使い、アプリケーションをリモートの Docker ホスト上にデプロイできます。この時、適切な環境変数 DOCKER_HOST
、 DOCKER_TLS_VERIFY
、 DOCKER_CERT_PATH
を使います。
環境変数を設定するだけで、追加設定なしに docker-compose
コマンドが普通に使えます。