参考訳です。
Compose ドキュメント目次(和訳)
- ユーザ・ガイド(このページです)
- インストール
- Compose をプロダクションで使うには
- Compose の拡張サービス
- コマンド補完
- クイックスタート・ガイド:Compose と Django
- クイックスタート・ガイド:Compose と Rails
- クイックスタート・ガイド:Compose と Wordpress
Compose リファレンス目次(和訳)
Docker Compose ドキュメント参考日本語訳 概要
原文:Overview of Docker Compose
https://docs.docker.com/compose/
Compose は、Docker を使った複数のコンテナを使うアプリケーションの定義と実行をするツールです。Compose を使えば、1つのファイル上で複数コンテナを使うアプリケーションを定義できます。それから、コマンドを1つ実行するだけで、アプリケションを実行するために必要な全てが起動できます。
開発環境やステージングサーバやCI向けに最適です。しかし、まだ本番環境での利用は推奨しません(訳注;現時点のバージョン0.3.0はベータ版の位置づけのためです。既知のバグや機能改善によって、このドキュメントそのものも変わる可能性があります)。
Compose を使うには、基本的に3つのステップを踏みます。
-
Dockerfile
を使ってアプリケーションの環境を設定します。このファイルはどこでも再利用できます。 -
docker-compose.yml
の中でアプリケーションをまとめ、サービスとして定義すると、1つの環境で同時に実行できるようになります。 - あとは、
docker-compose up
を実行すると、Compose はアプリケーション全体を起動・実行します。
この docker-compose.yml
は次のようなものです:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
redis:
image: redis
Compose にはアプリケーションのライフサイクルを管理するコマンドがあります。
- 起動、停止、サービスの再構築
- 実行中のサービスの状態を参照
- 実行中のサービスのストリーム・ログ出力
- 1回だけのサービスをコマンドで実行
Compose の文章
- Compose のインストール
- Django の始め方
- Rails の始め方
- Wordpress の始め方
- コマンドライン・リファレンス
- YAML ファイル・リファレンス
- Compose 環境変数
- Compose コマンドライン補完
クイック・スタート
簡単な Python ウェブ・アプリケーションを Compose で実行する練習を始めましょう。多少の Python の知識が必要となりますが、Python に慣れていなくても、表示されている内容の概念については理解できると思います。
インストールとセットアップ
まず、Docker と Compose をインストールします。
次にプロジェクト(訳者注;作業用)のディレクトリを作成します:
$ mkdir composetest
$ cd composetest
ディレクトリ内に移動し、app.py
を作成します。ファイル中には Flask フレームワークを使った簡単なウェブアプリケーションで、Redis に値をインクリメントするものです。
from flask import Flask
from redis import Redis
import os
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
redis.incr('hits')
return 'Hello World! I have been seen %s times.' % redis.get('hits')
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
次に、requirements.txt
に Python の依存情報を定義します。
flask
redis
Docker イメージの作成
それでは、アプリケーションが依存している全てを含む Docker イメージを作成します。Dockerfile
と呼ばれるファイルで、どのようなイメージを作成するか記述します。
FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD python app.py
このファイルが Docker に伝えるのは、
- Python 2.7 イメージを使ってイメージの構築を始める
- 現在のディレクトリ
.
を、イメージの/code
に追加する - 作業ディレクトリを
/code
に指定する - Python に依存するパッケージをインストールする
-
python app.py
をコンテナのデフォルト・コマンドに指定する
Dockerfile の詳細については Docker user guide(英語) と Docker reference(英語) をお読みください。
構築するには docker build -t web .
を実行します。
サービスの定義
次に、docker-compose.yml
を使ってサービスの集まりを定義します。
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
redis:
image: redis
ここでは2つのサービスを定義します:
web
- 現在のディレクトリにある
Dockerfile
から構築する - コンテナの公開ポート 5000 をホストマシン上のポート 5000 に転送する
- web コンテナを Redis サービスにリンクして接続する
- ホスト上の現在のディレクトリをコンテナの
/code
にマウントし、コードを変更したいときのイメージ再構築を不要にする
redis
- Docker Hub レジストリから公開 Redis イメージを取得する
###Compose を使った構築とアプリケーションの実行
これで docker-compose up
を実行すると、Compoes は Redis イメージを取得し、コード用のイメージを作成し、全て起動します:
$ docker-compose up
Pulling image redis...
Building web...
Starting composetest_redis_1...
Starting composetest_web_1...
redis_1 | [8] 02 Jan 18:43:35.576 # Server started, Redis version 2.8.3
web_1 | * Running on http://0.0.0.0:5000/
web アプリケーションは、Docker デーモンのホスト上でポート 5000 をリッスンしています(もし boot2docker を使っているのであれば、boot2docker ip
で IP アドレスを確認できます )。ブラウザで http://boot2dockerのIPアドレス:5000
を開くと、次のように表示されます:
Hello World! I have been seen 1 times.
ページを再読込すると、番号が増えます。
サービスをバックグラウンドで実行したい場合は、-d
フラグ(「detached」デタッチ・モード)で docker-compose up
を実行し、docker-compose ps
で何が稼働しているか見てみます:
$ docker-compose up -d
Starting composetest_redis_1...
Starting composetest_web_1...
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------
composetest_redis_1 /usr/local/bin/run Up
composetest_web_1 /bin/sh -c python app.py Up 5000->5000/tcp
docker-compose run
は、サービスを1度だけ実行するコマンドです。例えば、web
サービスで利用可能な環境変数を見るには:
$ docker-compose run web env
利用可能なコマンドについては、docker-compose --help
をご覧ください。
Compose を docker-compose up -d
で実行すると、おそらく終わったらサービスを停止するでしょう。
$ docker-compose stop
以上、Compose の基本動作を見て来ました。
リリース・ノート
Version 1.2.0 (2015年4月7日)
リリースに関する全ての情報は、1.2.0 マイルストーン・プロジェクトページ(英語)をお読みください。
-
extends
キーワードは、共有設定ファイルをでサービスを拡張することができます。詳細はプルリクエスト #1088(英語)をご覧ください。 -
Swarm とう上手く連携できます。Swarm は同じホスト上にあるコンテナの、相互依存をスケジュールします。``詳細はプルリクエスト #972をご覧ください。
ヘルプを得るには
Docker Compose は、まだ初期段階であり、活発に開発中です。ヘルプが必要であれば、コントリビューターや、プロジェクトで同じことを考えている個人に話しかけてください。私達はコミュニケーションのためのチャンネルをオープンにしています。
- バグや機能リクエスト:GitHub の issue trackerをお使いください。
- プロジェクトの方とリアルタイムに話したい:IRC の
#docker-compose
チャンネルに参加ください。 - コードの貢献やドキュメントの変更:GitHub 上でプルリクエストをください。
より詳細な情報やリソースについては、Getting Help project page をご覧ください。
内容に問題がありました、編集リクエスト or コメントいただけると助かります。