LoginSignup
27
24

More than 5 years have passed since last update.

Docker Compose - Compose をプロダクションで使うには

Last updated at Posted at 2015-07-09

Docker Compose - Compose をプロダクションで使うには

原文:Using Compose in produciton
https://docs.docker.com/compose/production/

まだ Compose はプロダクション(本番)で使える状態ではありませんが、もし実験的、あるいはプロダクションへのデプロイの練習に使うのであれば、このガイドが役に立つでしょう。プロジェクトはプロダクションで使えるように作業が進行しています。進捗状況を知りたければ、ロードマップ(英語) で現在の状況や、足りないものを確認ください。

プロダクションへのデプロイ時、実行環境として適切な設定行ったアプリケーションを、あまり変更したくないでしょう。変更とは次のようなものです:

  • アプリケーション用に割り当てられたボリュームを削除しますが、コンテナの中にコードは残したままとし、外から変更できなくする
  • ホストに異なったポートを割り当てる
  • 異なった環境変数を設定する(例えば、冗長なログの出力を減らしたり、メール送信を有効にするなど)
  • ダウンタイムを避けるため、再起動ポリシーの指定(例:restart: always
  • 外部サービスの追加(例:ログ集積)

これらの理由のため、例えばプロダクション向けの設定を production.yml ファイルでという様に、環境にあわせ別々の Compose ファイルを定義したくなるでしょう。

メモ:extends キーワードは、複数の Compose ファイルを管理するノニ便利です。手動でコピーやペーストすることなく、共通サービスの再利用ができます。

別の設定ファイルを準備したら、Compose で COMPOSE_FILE 環境変数を使い、そのファイルを指定します。

$ COMPOSE_FILE=production.yml
$ docker-compose up -d

メモ:環境変数を使わずにワンオフ・コマンドを使ってもファイルを使えます。その場合は -f フラグを使います。例:docker-compose -f production.yml up -d

変更のデプロイ

アプリケーションのコードを変更したときは、イメージを再構築し、アプリケーションのコンテナを作り直す必要があります。web というサービスを再デプロイするには、次のようにします:

$ docker-compose build web
$ docker-compose up --no-deps -d web

これは、まず web イメージの再構築するため、停止、破棄をしてから、web サービスのみ再作成します。Compose に --nodeps フラグを使うことで、web に依存するサービスの再作成をしません。

単一サーバ上での Compose 実行

Compose を使えば、アプリケーションをリモートの Docker ホストにデプロイできます。その時に、適切な環境変数 DOCKER_HOSTDOCKER_TLS_VERIFYDOCKER_CERT_PATH を使います。この処理を行うために、Docker Machine を使えばローカルやリモートの Docker ホストを非常に簡単にします。これはリモートにデプロイする必要が無くてもお薦めします。

環境変数を設定するだけで、更に他の設定を行わなくてもdocker-compose コマンドを普通に使えます。

Swam クラスタで Compose を実行する。

Docker Swarm は Docker 独自のクラスタリング・システムで、単一の Docker ホストと同じ API を持っています。つまり、Compose は Swarm インスタンスと一緒に使うことができ、アプリケーションを複数のホストで実行します。

Compose と Swarm の連携は、まだ実験的な段階です。Swarm もベータ版です。ですが、実験的に試してみたいのであれば、integration guideをお読みください。

27
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
24