はじめに
こんにちは。すっかり夏になりました。ponponnsanです。
さて、今日はなんとなく雰囲気で触っていたdocker composeについて理解を深めようと思いました。
参考にした書籍は以下です。とてもわかりやすくておすすめです。さすがAmazonベストセラー。
Docker Composeとは
dockerのコマンドをいちいち全部書くのは面倒ですよね。
Docker Composeは構築に関わるコマンド分の内容を一つのyamlファイルに書きこんで、一気に実行したり、停止・破棄することができるものです。
Dockerfile との違い
Docker Compose: 「docker run」 の集合体。コンテナに加えてネットワークやボリュームなども作成できる。
Dockerfile: イメージを作成するもの。ネットワークやボリュームなどは作成できない。
*ボリューム...ストレージの一領域を区切ったもの。長いカステラの一部分みたいなイメージ。
docker-compose.yamlの書き方
docker-compose.yaml
# バージョンを書く
version: '3'
# コンテナの情報
services:
mySqlService:
image: mysql:5.7
# macはこれがないと動かなかった。
# M1のCPUは、linux/arm64/v8だが、使用しようとしたimageがこれに対応していない
# platformを指定して、linux/amd64に指定をする
platform: linux/amd64
networks:
- myNetwork
volumes:
- mySqlVolume:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: myDb
MYSQL_USER: myUser
MYSQL_PASSWORD: myPass
wordpressService:
depends_on:
- mySqlService
image: wordpress
networks:
- myNetwork
volumes:
- wordpressVolume:/var/www/html
ports:
- 8085:80
restart: always
environment:
WORDPRESS_DB_HOST: mySqlService
WORDPRESS_DB_NAME: myDb
WORDPRESS_DB_USER: myUser
WORDPRESS_DB_PASSWORD: myPass
# ネットワークの情報
networks:
myNetwork:
# ボリュームの情報
volumes:
mySqlVolume:
wordpressVolume:
定義ファイルの記述ルール
- 最初にDocker Composeのバージョンを書く
- 「services」「networks」「volumes」の順に書く
- 親子関係はスペースで字下げして表す
- 名前は、大項目の下に字下げして書く
- コンテナの設定内容は名前の下に字下げして書く
- 「-」が入っていたら複数指定できる
- 名前の後ろには「:」をつける
- 「:」の後ろには、空白が必要
- コメントアウトが使える
- 文字列はシングルクォートかダブルクォート
今後の課題
- ボリュームマウントとバインドマウントの違い
- ネットワークの設定の仕方