Docker Composeとは?
複数のDockerコンテナをまとめて管理することができるツールです。複数サーバーが動作することが前提のWebアプリの開発等に便利です。本来複雑だったアプリケーションやミドルウェアの依存関係がコードで簡潔に管理できるようになります。
Docker Composeの特徴
- yaml形式の設定ファイル
- 実行するコンテナを定義したり実行順序を考えたりできる。
docker-compose.yml
Docker Composeの設定ファイルです。複数コンテナ構成を定義することができます。
下記の項目を設定できます。
コマンド名 | 説明 |
---|---|
version | docker-compose.ymlのファイルフォーマットのバージョンです。現状の最新版は「3」になります。 |
image | Dockerコンテナのベースイメージを指定します。既に「Docker Hub」等のリポジトリに公開されているイメージをそのまま使う場合等にはこちらが使われます。 |
build | Dockerfileが存在するディレクトリを相対パスで指定します。Docker Hub等のリポジトリで公開されているイメージを使うのではなく、ローカルに作成したDockerfileからDockerイメージを使う場合にこのコマンドを使います。 |
command | コンテナ内で動かすコマンドを指定します。コンテナを起動した際にデフォルトで実行されるコマンドです。ここにコマンドを定義しておけば「docker-compose up」を実行した際に自動で実行してくれます。なので、アプリ開発で言えば「rails s」等のアプリを起動するためのコマンドだったりを指定することが多いでしょう。 |
entrypoint | コンテナ内で動かすコマンドを指定します。 |
links | コンテナ間の連携を指定します。 |
ports | ホストマシンのコンテナへのポートフォワーディングの定義です。(コンテナの公開ポート) 「コンテナが公開するポート番号:コンテナ内部の転送先ポート番号」 or 「コンテナ内部の転送先ポート番号」で指定します。 |
expose | ホストマシンへポートを公開せずに、リンク機能を使って連携するコンテナのみにポートを公開する場合に使います。ホストマシンとの通信が必要ない場合はこちらを使います。 |
depends_on | 複数サービスの依存関係を定義する際に使用します。 |
environment | コンテナ内の環境変数を指定します。 |
env_file | 環境変数の数が多くて、環境変数ファイルを読み込む場合に使います。 |
container_name | コンテナに名前を付ける場合に使います。 |
labels | コンテナにラベルを付ける場合はこちらを使います。 |
volumes | ホストOSのボリューム(ディレクトリ)をコンテナにマウントして共有できるようにします。
ホスト側でマウントパスを指定する場合は、「ホストディレクトリ:コンテナディレクトリ」とします。 |
volumes_from | 別コンテナから、すべてのボリュームをマウントする際は、ここにコンテナ名を指定します。 |
depends_on
「コンテナの作成順序」と「依存関係」を決めるものです。下記のように指定した場合は依存するdbが先に起動して、webが後に起動します。
1 2 3 |
web: depends_on: - db |
volumes
例えば、下記のように記述すればホストOSの「/tmp」とコンテナ上の「/var/tmp」を共有することが可能です。
1 2 |
volumes: - ./tmp:/var/tmp |
この記事へのコメントはありません。