Docker Composeのオプション一覧と解説

# Docker Composeのオプション一覧と解説

Docker Composeは、`docker-compose`コマンドを使用して複数のコンテナを管理するツールだ。このコマンドには、さまざまなオプションがあり、それぞれの目的に応じて活用できる。以下では、よく使うオプションからあまり知られていないオプションまで、できる限り多くを解説する。

---

## 基本的なコマンドとオプション

Docker Composeの基本構文は次の通り。

```bash
docker-compose [COMMAND] [OPTIONS]
```

- **`[COMMAND]`**: 実行するコマンド（例: `up`, `down`, `build`）。
- **`[OPTIONS]`**: コマンドに付加するオプション。

---

### 1. `docker-compose up`

サービスをビルド・起動し、必要に応じて再作成する。

#### オプション

- **`-d` (デタッチモード)**:
  - バックグラウンドでコンテナを起動する。
  - 例: `docker-compose up -d`

- **`--build`**:
  - 必要に応じてサービスをビルドしてから起動する。
  - 例: `docker-compose up --build`

- **`--force-recreate`**:
  - 常に新しいコンテナを作成する（既存コンテナを再利用しない）。
  - 例: `docker-compose up --force-recreate`

- **`--remove-orphans`**:
  - 現在の`docker-compose.yml`に定義されていない不要なコンテナを削除する。
  - 例: `docker-compose up --remove-orphans`

- **`--scale SERVICE=NUM`**:
  - 指定したサービスを複数インスタンス起動する。
  - 例: `docker-compose up --scale web=3`

---

### 2. `docker-compose down`

起動中のコンテナや関連リソース（ネットワーク、ボリューム）を停止して削除する。

#### オプション

- **`-v`**:
  - ボリュームも一緒に削除する。
  - 例: `docker-compose down -v`

- **`--rmi [local|all]`**:
  - ローカルで作成したイメージ（`local`）またはすべてのイメージ（`all`）を削除する。
  - 例: `docker-compose down --rmi all`

- **`--remove-orphans`**:
  - 現在のComposeプロジェクトに属さないコンテナを削除する。
  - 例: `docker-compose down --remove-orphans`

---

### 3. `docker-compose build`

サービスのイメージをビルドする。

#### オプション

- **`--no-cache`**:
  - キャッシュを無視してイメージをビルドする。
  - 例: `docker-compose build --no-cache`

- **`--pull`**:
  - ベースイメージをリモートリポジトリから最新バージョンに更新してビルドする。
  - 例: `docker-compose build --pull`

- **`--parallel`**:
  - サービスを並列でビルドする。
  - 例: `docker-compose build --parallel`

---

### 4. `docker-compose logs`

コンテナのログを表示する。

#### オプション

- **`-f` (フォロー)**:
  - リアルタイムでログを追跡する。
  - 例: `docker-compose logs -f`

- **`--tail=N`**:
  - 最後のN行だけを表示する。
  - 例: `docker-compose logs --tail=100`

- **`SERVICE_NAME`**:
  - 特定のサービスのログだけを表示する。
  - 例: `docker-compose logs web`

---

### 5. `docker-compose exec`

実行中のコンテナ内でコマンドを実行する。

#### オプション

- **`-T`**:
  - 擬似端末（TTY）を割り当てない。
  - 例: `docker-compose exec -T web ls /var/www`

- **`SERVICE_NAME COMMAND`**:
  - 特定のサービスのコンテナでコマンドを実行する。
  - 例: `docker-compose exec db mysql -u root -p`

---

### 6. `docker-compose ps`

現在のComposeプロジェクトのコンテナの状態を表示する。

#### オプション

- **`-q`**:
  - コンテナIDだけを表示する。
  - 例: `docker-compose ps -q`

- **`SERVICE_NAME`**:
  - 特定のサービスに関連するコンテナだけを表示する。
  - 例: `docker-compose ps web`

---

### 7. その他の便利なコマンド

#### `docker-compose restart`

すべてのコンテナを再起動する。特定のサービスのみを再起動することも可能。

```bash
docker-compose restart
docker-compose restart web
```

---

#### `docker-compose stop`

コンテナを停止する（削除はしない）。

```bash
docker-compose stop
```

---

#### `docker-compose rm`

停止したコンテナを削除する。

- **`-f`**:
  - 確認を求めずに削除する。
  - 例: `docker-compose rm -f`

---

#### `docker-compose config`

`docker-compose.yml`ファイルの構文を検証し、最終的な設定を出力する。

- **`--services`**:
  - 定義されているサービス名だけを表示する。
  - 例: `docker-compose config --services`

- **`--volumes`**:
  - 定義されているボリューム名だけを表示する。
  - 例: `docker-compose config --volumes`

---

### 8. デバッグに役立つオプション

#### `docker-compose top`

コンテナ内で実行中のプロセスを表示する。

```bash
docker-compose top
```

---

#### `docker-compose version`

Docker Composeのバージョン情報を表示する。

```bash
docker-compose version
```

---

### オプション一覧まとめ

| コマンド                 | 主なオプション                           | 説明                                        |
|--------------------------|------------------------------------------|---------------------------------------------|
| `up`                    | `-d`, `--build`, `--force-recreate`      | コンテナの起動と再作成                      |
| `down`                  | `-v`, `--rmi`, `--remove-orphans`        | コンテナと関連リソースの削除                |
| `build`                 | `--no-cache`, `--pull`, `--parallel`     | イメージのビルド                            |
| `logs`                  | `-f`, `--tail`, `SERVICE_NAME`           | ログの表示                                  |
| `exec`                  | `-T`, `SERVICE_NAME COMMAND`             | コンテナ内でコマンドを実行                  |
| `ps`                    | `-q`, `SERVICE_NAME`                     | コンテナの状態を表示                        |
| `restart`               |                                          | コンテナの再起動                            |
| `stop`                  |                                          | コンテナの停止                              |
| `rm`                    | `-f`                                     | 停止したコンテナの削除                      |
| `config`                | `--services`, `--volumes`                | 設定の検証と表示                            |

---

## まとめ

Docker Composeのオプションは非常に多岐にわたるが、プロジェクト管理を効率化するために非常に役立つ。よく使うオプションを覚えておくことで、トラブルシューティングやプロジェクト管理がスムーズになる。

- **開発中**: `up -d --build`や`logs -f`を活用。
- **設定変更後**: `config`で構文検証を行い、`up -d`で反映。
- **リソース管理**: `down -v`や`rm`を適宜使用。