【どこでも同じ環境で開発を】Dockerざっくりまとめ ④Docker compose

プログラミング
LINEで送る
Pocket

はじめに

前回のDockerfileの内容に引き続き、今回はDocker Composeについてざっくりまとめます。
例によって、Docker Composeのページに詳細があります。

Docker Composeとは

Docker composeとは、複数のコンテナを定義し実行するためのツールです。これを使うことで、各コンテナの起動や停止が簡単になったり、それぞれの起動の際のオプションの設定での間違いが減ります。
利用するためにはdocker-compose.ymlというファイルにDockerビルドやコンテナ起動のオプションなどを含め、複数のコンテナの定義を書いておき、docker-compose upという形で実行をします。
具体的にdocker-compose.ymlの内容は、

  • Dockerイメージをビルドするための情報(使用するDockerfile、イメージ名など)
  • コンテナ起動するための情報(ホストとの共有ディレクトリ設定やポートフォワードなどの起動オプションなど)
  • 使用するDockerネットワーク

などが書かれます。

「米国AI開発者がゼロから教えるDocker講座」で実際に作成したdocker-compose.ymlでは、RubyとprogreSQLを使用しました。以下のようなものになります(一部改変)。

version: '3'

volumes:
  db-data:

services:
  web:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - '.:/[dir]'
    environment:
      - 'DATABASE_PASSWORD=xxx'
    tty: true
    stdin_open: true
    depends_on:
      - db
    links:
      - db

  db:
    image: postgres
    volumes: 
      - 'db-data:/var/lib/postgresql/data'
    environment:
      - 'POSTGRES_HOST_AUTH_METHOD=trust'

servicesの中のweb:db:がそれぞれRubyとprogreSQLのコンテナに相当します。web:db:以下にある、build:ports:environment:が定義にあたり、これらを元にコンテナが作成されます。

Docker Composeのコマンド

docker-compose build

docker bulid [build contexts]に当たります。docker-compose.yml[build contexts]もあるので、docker-compose buildだけで実行できます。

docker-compose up

docker run [image]に当たります。docker-compose buildと同じく、このコマンドだけで実行できます。

docker-compose ps

docker psに当たります。docker-composeの状態を表示します。

docker-compose down

これを実行すると、docker-composestopし、rm(削除)します。

docker-compose exec [service]

docker exec [service]に当たります。[service]には、上記でいうwebdbが入ります。

dockerコマンド、docker-composeコマンド対応早見表

dockerコマンドdocker-composeコマンド
docker bulid [build contexts]docker-compose build
docker run [image]docker-compose up
docker psdocker-compose ps
docker exec [service]docker-compose exec [service]
docker stop & docker rmdocker-compose down

おわりに

今回はDocker Composeについてざっくりまとめました。Docker Composeをつかうとコマンドを毎回入れる手間が減ったりと、手間が減るので有効に使うと便利になります。
①〜④まで続いたDockerざっくりまとめもとりあえず今回で終了です。お付き合いありがとうございました。

LINEで送る
Pocket

コメント

タイトルとURLをコピーしました