docker

Docker勉強メモ③(Docker-Compose)

Dockerfileは過去2回のアウトプットを経て何となく理解出来ました。
今後はDocker以外の学習を進める際にコンテナ化することを意識すればよりDockerを深く学べると考えています。

今回はDocker-Composeの話となります。

複数のイメージを1つに束ねて誰でも同じ開発環境を構築

Dockerfileでビルドしたイメージは容量を小さく、命令はシンプルの方が良いため、1つのアプリケーションを作成する場合は複数イメージになることも多いです。
その複数イメージを1つに束ねて、初期設定も兼ねた詳細な定義はDocker-Composeで行います。

イメージでは各種ツールのバージョンの指定やインストールコマンド、環境変数などそのツールで絶対行う設定までを定義
Docker-Composeでそのイメージ群の実行や公開ポート・ビルドの設定、開発環境特有の初期設定(DBにテストデータ入れるとか)を行います。

そして、何でもかんでもDocker-Composeまで用意する必要は無く、1つのDockerfileで完結出来るなら不要です。

よく使うコマンド

  • docker-compose up -d
  • docker-compose stop
    • コンテナを停止。再開する場合はstart
  • docker-compose down
    • コンテナを破棄。
    • ネットワークは削除されるが、ボリュームは削除されない。
    • ボリュームを削除する場合は「docker volume」

docker-compose.yml 構文メモ

depends_on

コンテナ間の依存関係を表す。
よく意味する依存関係ではなく、「depends_on で設定したコンテナが起動していたら起動する」というもの。

dockerfile

設定するDockerfile名。
指定すべきはDockerfile名のみでありディレクトリのパスはcontextを利用します。

context

上記、dockerfileで指定するDockerfileのディレクトリのパス。
docker-compose.ymlがあるパスが初期設定のためそこから辿ります。

その他

docker-compose.ymlの推奨として、サービス名(servicesやwebなど)とそのディレクトリは統一した方が良いです。
例えば「web:」というサービス名を使う場合はディレクトリ名も「web」となります。