Docker Compose をデタッチモードで起動する (docker compose up -d)

docker compose up コマンドを実行すると、現在のターミナル(端末)に入出力がアタッチされて Docker Compose のログが出力されるようになるため、その端末では別の入力作業ができなくなってしまいます(Ctrl-D で停止できます)。

$ docker compose up
[+] Running 2/0
 ⠿ Network myproject_default  Created
 ⠿ Container myproject-web-1  Created
Attaching to myproject-web-1
...(省略)...
myproject-web-1  | 2022/07/01 06:50:46 [notice] 1#1: start worker processes
myproject-web-1  | 2022/07/01 06:50:46 [notice] 1#1: start worker process 31
myproject-web-1  | 2022/07/01 06:50:46 [notice] 1#1: start worker process 32
...(省略)...

docker compose up コマンドを実行するときに、-d (--detach) オプションを指定すると、Docker Compose がデタッチモードで起動(バックグラウンド実行)されるため、その端末を引き続き使用できるようになります。

$ docker compose up -d
[+] Running 1/1
 ⠿ Container myproject-web-1  Started

$ (次のコマンドを入力可能)

表示されなくなったログは、docker compose logs コマンドで確認できます。

$ docker compose logs
...(省略)...
myproject-web-1  | 2022/07/01 06:50:46 [notice] 1#1: start worker processes
myproject-web-1  | 2022/07/01 06:50:46 [notice] 1#1: start worker process 31
myproject-web-1  | 2022/07/01 06:50:46 [notice] 1#1: start worker process 32
...(省略)...

Docker Compose で動作しているコンテナの一覧は docker compose ps で確認できます。

$ docker compose ps
NAME             COMMAND                 SERVICE  STATUS   PORTS
myproject-web-1  "/docker-entrypoint.…"  web      running  0.0.0.0:80->80/tcp

デタッチモードで起動したコンテナをすべて停止するには docker compose stop コマンド、停止されたコンテナを起動するには docker compose start コマンドを使用します。

$ docker compose stop   # コンテナを停止
$ docker compose start  # 停止中のコンテナを起動

コンテナやネットワークをすべて削除するには、docker compose down コマンドを実行します。 こちらは停止ではなくて削除なので気をつけてください。

$ docker compose down            # コンテナとネットワークの削除
$ docker compose down --volumes  # ボリュームまで削除する場合

なお、上記のようなコマンドは、対象の docker-compose.yml があるディレクトリ内(プロジェクト内)で実行する必要があります。 別のディレクトリから実行したいときは、-p オプションでプロジェクト名(デフォルトではディレクトリ名)を指定します。

$ docker compose -p myproject ps