docker-compose.yml書き方
はじめに
くーばねてすをやっつけるために新たなステージに上がるためについにdockerさんに会いに行くことにした。dockerさんと仲良くなることでコンテナシステムの仕組みの理解とくーばねてすを倒すための調査をする。まとめて構築するのにはdockerComposeを使用した。今回はdockerComposeのYAMLファイルの書き方を勉強する
概要
■dockerComposeのYAMLファイルな中身の意味
■YAMLファイルの書き方
■POINT
をまとめた(>_<)
■dockerComposeのYAMLファイルの中身の意味
で作成したdocker-compose.ymlファイルの意味を勉強する。
version: "3"①
services:②
wordpress-db:③
image: mysql:5.7
networks:
- wordpressnet
volumes:
- db_volume:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpassword
MYSQL_DATABASE: wordpressdb
MYSQL_USER: wordpressuser
MYSQL_PASSWORD: wordpresspass
wordpress-app:④
depends_on:
- wordpress-db
image: wordpress:latest
networks:
- wordpressnet
ports:
- 8080:80
restart: always
environment:
WORDPRESS_DB_HOST: wordpress-db
WORDPRESS_DB_NAME: wordpressdb
WORDPRESS_DB_USER: wordpressuser
WORDPRESS_DB_PASSWORD: wordpresspass
networks:⑤
wordpressnet:
volumes:⑥
db_volume:
①バージョンの設定
書式のバージョンの設定をする。
②全体の構成をするコンテナの設定
servicesでは全体の構成をするコンテナの設定をするという意味。
③コンテナ1
servicesで構成されるコンテナ1という意味。
④コンテナ2
servicesで構成されるコンテナ2という意味。
⑤ネットワーク
コンテナが参加するネットワークを定義する。
⑥ボリューム
コンテナが利用するボリュームを定義する。
■YAMLファイルの書き方
設定値の書き方
設定値の書き方は
①設定値:値となる
iamge:wordpress
または
iamge:
wordpress
文字列の指定
文字列の指定は「'」「"」で囲う。
version: "3"
複数の値
複数の値の記述したいときは先頭に「-」をつける。
ports:
- 8080:80
- 1234:1235
コメントの書き方
「#」を先頭に書くことで行末までがコメントとみなされる。
servicesの書式
servicesでコンテナの定義をする書式は以下のようになる。
services:
コンテナ名:
コンテナの設定
コンテナの設定
コンテナの設定...
コンテナ名:
コンテナの設定
コンテナの設定
コンテナの設定...
コンテナの設定一覧
|コンテナの設定|意味|
| --- | --- | --- |
|cammand|起動時のコマンドを指定|
|container_name|コンテナ名の指定|
|depends_on|ほかのサービスとの依存関係を示す。compose up/downしたときに指定したサービスが先に起動/終了するようになる|
|dns|DNSサーバーを指定する|
|env_file|指定した環境設定ファイルを読み込む|
|entrypoint|起動時のENTRYPOINTを指定する|
|environment|環境変数を指定する(Mysqlのパスワードやデータベース名など)|
|external_links|外部リンクを指定する|
|extra_hosts|外部ホストのIPアドレスを指定する。docker run --add-hostと同じ|
|iamge|利用するイメージを指定する|
|logging|ログ出力先を指定する|
|network_mode|接続するネットワークモードを指定する。|
|networks|接続するネットワークを指定する。dockerCompose.ymlファイルで指定したネットワークと「ipv4_address」「ipv6_address」を記述すると固定IPアドレスを指定することができる|
|ports|ポートのマッピングの設定をする|
|restart|コンテナの起動に失敗したときの再起動ポリシーの設定。no...何もしない。always...どんな終了ステータスでもいつも再起動する。no-failure...「0」以外のプロセスでコンテナが終了したときに再起動する。:回数で再起動の回数を指定できる|
|volumes|マウントするボリュームを指定する|
■POINT
■ネットワークの省略はできる
ネットワークの指定が省略されたときは自動的にネットワークが作成され、コンテナは生成されたネットワークに繋がるように設定される。
なのでネットワークの設定は必要がなければ指定しなくてもよい。
|設定項目|意味|
| --- | --- | --- |
|driver|ネットワークドライバを設定する|
|config|サブネットを指定する|
|external|dockerCompose外のネットワークを指定する(あらかじめ作成してから指定すること)|
■ボリュームの設定
volumes:
db_volume:
dockerComposeで指定した名前のボリュームをあらかじめ作成していない場合は自動的に作成され、作成されたボリュームはコンテナを削除しても削除されない。
ボリュームに関するコンテナの設定
|設定項目|意味|
| --- | --- | --- |
|driver|ボリュームドライバー名|
|driver_ops|ボリュームのオプション(パス名など)|
|external|dockerCompose外のボリュームを指定する(あらかじめ作成してから指定すること)|
■dockerComposeで作成したコンテナを個別に操作する
dockerComposeで起動したコンテナを個別に操作するときは、docker-composeコマンドで操作する。
$ docker-compose [dockerComposeコマンド] コンテナ名 ...
|dockerComposeコマンド|意味|
| --- | --- | --- |
|docker-compose logs|コンテナの出力を表示する|
|docker-compose rm|停止中のコンテナを終了する|
|docker-compose run|特定のコンテナを実行する|
|docker-compose exec|コンテナ内でコマンドを実行する|
|docker-compose start|特定のコンテナを開始する|
|docker-compose stop|特定のコンテナを停止する|
dockerComposeで作成されたコンテナをdockerComposeコマンドで操作することにより、dockerCompose.ymlで指定したコンテナの依存関係が考慮される。
連携のあるコンテナは一緒に終了する。
まとめ
dockerCompose!(>_<)
Discussion