Docker Compose

Dockerコンテナをファイルで制御する

eyecatch docker

docker composeは、複数のサービスを1つのファイルで、構築・管理することができます。

サービスをビルドする

docker imageを構築します。

docker compose build [OPTIONS] [SERVICE...]

キャッシュを用いずにimageを構築する

Dockerfileを更新した場合などは、docker imageを更新する必要がありますが、上記のコマンドだとキャッシュを用いてイメージを構築するため、docker imageが更新されません。その場合は、--no-cacheを付けてキャッシュを使わないようにすることで、対応します。

dokcer compose build --no-cache [SERVICE...

imageをリポジトリから取得する

docker imageをpullします。

docker compose pull [SERVICE..]

docker-compose.ymlで設定した[SERVICE..]を指定すれば、特定のimageをプルできます。

コンテナを作成して起動する

カレントディレクトリにあるdocker-compose.ymlで定義した複数のコンテナを作成・起動します。

$ docker compose up [OPTIONS] [SERVICE...]

バックグラウンドで起動する

バックグラウンドで起動するには、-dまたは--detachオプションを付けます。

$ docker compose up -d

プロジェクト名を指定して、バックグラウンドで起動する

-pオプションでプロジェクト名を指定できます。

$ docker compuse -p <PROJECT NAME> up -d

コンテナを再作成して起動する

imageの更新をした場合時などは、コンテナを再作成してから、起動させます。

$ docker compose up --force-recreate

コンテナを作成して起動してコマンドを実行する

docker-compose.ymlで設定した[SERVICE]を指定して、コンテナを作成し起動します。[COMMAND]で起動時に実行するコマンドを指定できます。

$ docker compose run SERVICE [COMMAND]

コンテナを停止する

稼働中のコンテナを停止させます。

$ docker compose stop [SERVICE...]

稼働中のコンテナを停止させます。コンテナは削除されません。停止させたコンテナはdocker compose startで再稼働できます。

コンテナを停止し、コンテナとネットワークを削除する

$ docker compose down

docker-compose.ymlの書き方

version: '3.7'
services:
    container:
        container_name: "test-container"
        tty: true

tty

tty: trueにすると、コンテナが立ち上がったままになるらしい。

各コンテナのログを見る

-fオプションを付けることで、ログが出力され続ける。

$ docker compose logs -f

See Also