docker-compose.ymlが必要なシーン
DBとWEBサービスを同時に立ち上げたいときなど、docker compose up
のワンコマンドで動かせて便利。サービス一つだけでも使った方がよい。
コード例
services:
db:
image: postgres
environment:
- POSTGRES_PASSWORD
web:
environment:
- SECRET_KEY
- POSTGRES_PASSWORD
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
version
docker-compose.ymlのファイルフォーマットのバージョン。
2021/02/17時点では3.8が最新っぽい。
Compose file version 3 reference
services
コンテナを「サービス」単位でまとめるための記述。
各コンテナの情報をこれにネストさせて書く。
db/web
サービスをどういう名前で定義するかの記述
わかりやすければなんでも良いっぽいけど、Docker起動の時に表示されるのでなんのサービスかわかるほうがよい。
上記の書き方のほかに、mysql、wordpressなど、直接利用するアプリケーション名を入れてもいいみたい。
image
Dockerhubからpullするイメージの指定。
build
Dockerfileのあるディレクトリを指定して、Dockerfileからイメージを読み込める。
environment
環境変数を設定する。
command
デフォルトのコマンドを上書きする。
entrypoint
デフォルトのコマンドを上書きする。command
と違って、bashでのコマンド入力で上書きされない。
docker-compose run web(自分で書いたサービス名)
以降のコマンドのデフォルトを入れられる。
volumes
ローカルのディレクトリをDockerイメージのディレクトリにマウントできる。
.:/code
は、カレントディレクトリをDocker上のcodeディレクトリにマウントしている。
ports
ローカルとコンテナのポート番号を指定する
ホスト側:コンテナ側
コンテナ側だけ指定した場合は、ホスト側はランダムなポートが割り当てられる。
depends_on
サービス間の依存関係を指定する。
web
の中でdepends_on
にdb
を指定すると、web
より先にdb
が起動する。
参考ページ
【連載】世界一わかりみが深いコンテナ & Docker入門 〜 その4:docker-composeってなに? 〜 | SIOS Tech. Lab
0 件のコメント:
コメントを投稿