今回は、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
別のサービスとの依存を示します。