【8/31まで 今季最大のセール開催中!】Udemyの人気コースが今なら1,200円から!!

docker-compose-memo

docker-composeとは
  1. 「docker-compose.yml」というファイルにコンテナの構成情報を定義することで、同一のホスト上の複数のコンテナを一括管理できます。
  2. docker-composeコマンドを実行すると複数のコンテナをまとめて起動したり停止したりできます。

yaml形式

YAMLは、構造化されたデータを表現するためのデータフォーマットです。
YAMLは、Pythonのようにインデントでデータの階層構造を表します。
インデントはタブではなく、半角スペースを使います。
YAMLでは、データの先頭に「-」を付けることで配列を表します。
「-」の後ろには半角スペースを必ず設けます。

書き方(Djangoプロジェクトのサンプル)

version: "3.9"

services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

image

Dockerコンテナの元になるベースイメージを指定するときに使います。
イメージの名前またはイメージIDを指定します。
上記の例ではwebserverというイメージのベースイメージとしてubuntuを指定しています。

build

imageを指定するのではなく、Dockerfileからビルドしてベースイメージにする場合はbuildを指定します。
buildにはDockerfileのファイルパスを指定します。
このときのカレントディレクトリはdocker-compose.ymlが格納されているパスになります。
ピリオドを指定するとカレントディレクトリを指します。

services:
  web:
   build: . #ピリオドでカレントディレクトリを指す。

depends_on:

複数のサービスの依存関係を定義するときはdepends_onを使用します。
自分よりも先に開始したいコンテナがある場合は以下のように記述します。
※先に開始するだけであって起動が終わるまで待つわけではない点に注意が必要です。

depends_on:
  - db

コマンド

docker-composeの作成/起動

docker-composeコマンドはymlファイルが格納されているディレクトリ内でのみ実行できます。
一度作成した後も再びこのコマンドで起動できます。

docker-compose up

コンテナの確認

docker-compose ps

docker-composeの起動

# 複数コンテナまとめて起動したい場合は以下のように記述する。
docker-compose start

# 特定のサーバのみ起動したい場合は以下のように記述する。
#(ymlファイルのservicesで定義しているサービス名を指定する。
# or
# docker-compose psの結果に出てくるSERVICE欄の名称を記載する。)
docker-compose start サービス名

docker-composeの停止

複数のコンテナを一括して停止することができます。

# 複数コンテナまとめて停止したい場合は以下のように記述する。
docker-compose stop

# 特定のサーバのみ停止したい場合は以下のように記述する。
#(ymlファイルのservicesで定義しているサービス名を指定する。
# or
# docker-compose psの結果に出てくるSERVICE欄の名称を記載する。)
docker-compose stop サービス名

docker-composeの削除

削除するには次のコマンドを実行します。

docker-compose down

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です