Docker Compose ドキュメント参考日本語訳 概要・目次

参考訳です。



## Compose ドキュメント目次（和訳）

* ユーザ・ガイド（このページです）
* [インストール](http://qiita.com/zembutsu/items/dd2209a663cae37dfa81)
* [Compose をプロダクションで使うには](http://qiita.com/zembutsu/items/fcc9b557a92c96bc323b)
* [Compose の拡張サービス](http://qiita.com/zembutsu/items/a2265a8cd602a5f4f52f)
* [コマンド補完](http://qiita.com/zembutsu/items/0626759948f386f4ceb3)
* [クイックスタート・ガイド：Compose と Django](http://qiita.com/zembutsu/items/7282d353d41d60fa594b)
* [クイックスタート・ガイド：Compose と Rails](http://qiita.com/zembutsu/items/5cc40fb4643dbc8448b6)
* [クイックスタート・ガイド：Compose と Wordpress](http://qiita.com/zembutsu/items/e97ecd5934220b321de5)


## Compose リファレンス目次（和訳）

* [CLI リファレンス](http://qiita.com/zembutsu/items/eca797efaed39ec7b906)
* [docker-compose.yml リファレンス](http://qiita.com/zembutsu/items/9e9d80e05e36e882caaa)
* [環境変数リファレンス](http://qiita.com/zembutsu/items/1644dfa1e749f43c892e)

# Docker Compose ドキュメント参考日本語訳 概要
原文：Overview of Docker Compose
https://docs.docker.com/compose/

Compose は、Docker を使った複数のコンテナを使うアプリケーションの定義と実行をするツールです。Compose を使えば、１つのファイル上で複数コンテナを使うアプリケーションを定義できます。それから、コマンドを１つ実行するだけで、アプリケションを実行するために必要な全てが起動できます。

開発環境やステージングサーバやCI向けに最適です。しかし、まだ本番環境での利用は推奨しません（訳注；現時点のバージョン0.3.0はベータ版の位置づけのためです。既知のバグや機能改善によって、このドキュメントそのものも変わる可能性があります）。

Compose を使うには、基本的に３つのステップを踏みます。

1. `Dockerfile` を使ってアプリケーションの環境を設定します。このファイルはどこでも再利用できます。
2.  `docker-compose.yml` の中でアプリケーションをまとめ、サービスとして定義すると、１つの環境で同時に実行できるようになります。
3. あとは、`docker-compose up` を実行すると、Compose はアプリケーション全体を起動・実行します。

この `docker-compose.yml` は次のようなものです：

```
web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
  links:
   - redis
redis:
  image: redis
```

Compose にはアプリケーションのライフサイクルを管理するコマンドがあります。

* 起動、停止、サービスの再構築
* 実行中のサービスの状態を参照
* 実行中のサービスのストリーム・ログ出力
* １回だけのサービスをコマンドで実行

## Compose の文章

* [Compose のインストール](http://qiita.com/zembutsu/items/dd2209a663cae37dfa81)
* [Django の始め方](http://qiita.com/zembutsu/items/7282d353d41d60fa594b)
* [Rails の始め方](http://qiita.com/zembutsu/items/5cc40fb4643dbc8448b6)
* [Wordpress の始め方](http://qiita.com/zembutsu/items/e97ecd5934220b321de5)
* [コマンドライン・リファレンス](http://qiita.com/zembutsu/items/eca797efaed39ec7b906)
* [YAML ファイル・リファレンス](http://qiita.com/zembutsu/items/9e9d80e05e36e882caaa)
* [Compose 環境変数](http://qiita.com/zembutsu/items/1644dfa1e749f43c892e)
* [Compose コマンドライン補完](http://qiita.com/zembutsu/items/0626759948f386f4ceb3)

## クイック・スタート

簡単な Python ウェブ・アプリケーションを Compose で実行する練習を始めましょう。多少の Python の知識が必要となりますが、Python に慣れていなくても、表示されている内容の概念については理解できると思います。

### インストールとセットアップ

まず、[Docker と Compose をインストール](http://qiita.com/zembutsu/items/dd2209a663cae37dfa81)します。

次にプロジェクト（訳者注；作業用）のディレクトリを作成します：

```
$ 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(英語)](https://docs.docker.com/userguide/dockerimages/#building-an-image-from-a-dockerfile) と [Docker reference(英語)](http://docs.docker.com/reference/builder/) をお読みください。

構築するには `docker build -t web .` を実行します。

### サービスの定義

次に、`docker-compose.yml` を使ってサービスの集まりを定義します。

```
web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
  links:
   - redis
redis:
  image: redis
```

ここでは２つのサービスを定義します：

#### web

* 現在のディレクトリにある `Dockerfile` から構築する
* コンテナの公開ポート 5000 をホストマシン上のポート 5000 に転送する
* web コンテナを Redis サービスにリンクして接続する
* ホスト上の現在のディレクトリをコンテナの `/code` にマウントし、コードを変更したいときのイメージ再構築を不要にする

#### redis

* Docker Hub レジストリから公開 [Redis](https://registry.hub.docker.com/_/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` は、サービスを１度だけ実行するコマンドです。例えば、`web` サービスで利用可能な環境変数を見るには：

```
$ docker-compose run web env
```

利用可能なコマンドについては、`docker-compose --help` をご覧ください。

Compose を `docker-compose up -d` で実行すると、おそらく終わったらサービスを停止するでしょう。

```
$ docker-compose stop
```

以上、Compose の基本動作を見て来ました。

* 次は、[Django](http://qiita.com/zembutsu/items/7282d353d41d60fa594b)、[Rails](http://qiita.com/zembutsu/items/5cc40fb4643dbc8448b6)、[Wordpress](http://qiita.com/zembutsu/items/e97ecd5934220b321de5) を試しましょう。
* [コマンド](http://qiita.com/zembutsu/items/eca797efaed39ec7b906)、[設定ファイル]()、[環境変数]()に関するリファレンス・ガイドもご覧ください。

## リリース・ノート

### Version 1.2.0 (2015年4月7日)

リリースに関する全ての情報は、[1.2.0 マイルストーン・プロジェクトページ(英語)](https://github.com/docker/compose/wiki/1.2.0-Milestone-Project-Page)をお読みください。

* `extends` キーワードは、共有設定ファイルをでサービスを拡張することができます。詳細は[プルリクエスト #1088(英語)](https://github.com/docker/compose/pull/1088)をご覧ください。

* Swarm とう上手く連携できます。Swarm は同じホスト上にあるコンテナの、相互依存をスケジュールします。``詳細は[プルリクエスト #972](https://github.com/docker/compose/pull/972)をご覧ください。

## ヘルプを得るには

Docker Compose は、まだ初期段階であり、活発に開発中です。ヘルプが必要であれば、コントリビューターや、プロジェクトで同じことを考えている個人に話しかけてください。私達はコミュニケーションのためのチャンネルをオープンにしています。

* バグや機能リクエスト：[GitHub の issue tracker](https://github.com/docker/compose/issues)をお使いください。
* プロジェクトの方とリアルタイムに話したい：IRC の `#docker-compose` チャンネルに参加ください。
* コードの貢献やドキュメントの変更：[GitHub 上でプルリクエスト](https://github.com/docker/compose/pulls)をください。

より詳細な情報やリソースについては、[Getting Help project page](https://docs.docker.com/project/get-help/) をご覧ください。


----
内容に問題がありました、編集リクエスト or コメントいただけると助かります。