Dockerをざっくりと理解する~Docker Compose編~

今回は、Docker Composeについて解説します。

Docker Composeとは

Dockerを使用していると複数のコンテナを同時に起動する場合やコンテナを起動する場合があります。ただ、複数のコンテナを別々に立ち上げたり、コマンドをいちいち入力するのは、手間ですし環境を共有する上での障害になります。

そこで、コンテナの立ち上げ時の設定を一括で行うのがDocker Composeになります。

Docker Composeを使用することで複数コンテナの管理が簡単になったり、コンテナを使用する際のミスを減らすことができます。

通常、Docker Composeはdocker-compose.ymlファイルに、立ち上げ時の設定を記載して使用します。

Docker-compose.ymlの書き方

サンプルコード

公式サイトを見てみると、Docker-compose.ymlの書き方は下記のようにあります。

version: '3'
services:
  db:
    image: postgres
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

トップレベルの設定内容

Docker-compose.ymlの記載内容には、トップレベルとして、version、services、network、volumesがあります。

services、network、volumesなどそれぞれの項目で定義した情報は、定義した名前で使用することができます。

例えば、volumesでsample-volumeという名前でボリューム情報を定義した場合、servicesでsample-volumeを指定すると、volumesで定義したボリューム情報を使用することができます。

注意点としては、version、services、network、volumesの順番で記載する必要があります。

・version

  Docker Composeの書き方のバージョンを示しています。versionが異なると書き方も異なります。

・services

  複数のコンテナを起動するためのアプリケーションを名前付きで指定します。

・network

  コンテナのネットワーク情報を定義します。

・volumes

  コンテナにマウントするボリューム情報を定義します。

services内の設定内容

次はserviceの中で行う各コンテナの設定内容になります。

サービスの内容として主に使用するものは下記になります。

・image

 Docker hubから取得する使用するイメージになります。

・build

 Dockerfileからイメージをビルドする際にはDockerfileのパスを指定します。

・command 

 コンテナ起動時に実行するコマンド。Dockerfileにあるコマンドより優先して実行されます。

・volumes

 コンテナ内にマウントするローカルディレクトリ(右側)とマウント先のコンテナ内のディレクトリ(左側)を指定します。

・ports

 ローカルコンピュータとコンテナを繋ぐポート番号を指定します。

・container_name

 コンテナ名を定義します。

・depends_on

 別のサービスとの依存を示します。

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