Docker Compose の -p オプションで VS Code でのコンテナ管理を便利にする

はじめに

今日は Docker Compose でプロジェクト名を指定できる -p (--project-name) オプションの使用方法と、それを用いて VS Code (Visual Studio Code) でコンテナ管理を便利にするアイディアを紹介します

OS
Windows 10 Home
VS Code
1.49.3
Docker 拡張
1.6.0
Docker
19.03.1
Docker Compose
1.24.1
目次
  1. 下準備
  2. -p (--project-name) オプションの使い方
  3. VS Code 「Docker」拡張の設定方法
  4. おわりに

1. 下準備

動作確認に使用した docker-compose ファイルです。
説明の便宜上 my_docker フォルダの中に入れていますが、別のフォルダ名で差支えありません。

また使用しているイメージについても特別な意味はありません。
説明上3つぐらいコンテナが欲しかったので、僕が慣れている組み合わせにしました。

/my_docker/docker-compose.yml
version: "3"

services:
  # PHP-Apache
  web:
    container_name: web
    image: php:7.4-apache
    ports:
      - "80:80"

  # MySQL
  db:
    container_name: db
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: sampledb
      MYSQL_ROOT_PASSWORD: mu7ya9to

  # phpMyAdmin
  pma:
    container_name: pma
    image: phpmyadmin/phpmyadmin:5.0
    ports:
      - "8080:80"
    environment:
      PMA_HOST: myapp-db
      PMA_USER: root
      PMA_PASSWORD: mu7ya9to

2. -p (--project-name) オプションの使い方

docker-compose でビルドしたコンテナにはプロジェクト名が付与されます。それを指定するためのオプションが -p (--project-name) です。

例えば下記のように使います。

$ cd /path/to/my_docker
$ docker-compose -p sample1 up -d
Creating network "sample1_default" with the default driver
Creating pma ... done
Creating web ... done
Creating db  ... done

# 下記コマンドでプロジェクト名確認
$ docker inspect --format='{{index .Config.Labels "com.docker.compose.project" }}' web
sample1

プロジェクト名の確認用コマンドですが、PowerShell の場合は下記コマンドをお使いください。

詳細は「PowerShell で docker inspect の format に " (ダブルクォート)を入れてエラーが出た時の対応方法」をご覧ください。

Windows PowerShell 用
PS > docker inspect --format='{{index .Config.Labels `"com.docker.compose.project`" }}' web
sample1

下記のように -p オプションを省略するとフォルダ名がプロジェクト名になります。

上記でコンテナを作っている場合は、一度削除してから試してください。

$ cd /path/to/my_docker
$ docker-compose up -d
Creating network "my_docker_default" with the default driver
Creating pma ... done
Creating web ... done
Creating db  ... done

$ docker inspect --format='{{index .Config.Labels "com.docker.compose.project" }}' web
my_docker

また -p オプションは --project-name と書くことも可能です。

$ docker-compose --project-name sample1 up -d

3. VS Code 「Docker」拡張の設定方法

VS Code の Docker Extension にはコンテナの一覧表示があります。下図は初期設定で表示しているものですが、表示内容を変更することができます。

まずは赤枠で囲んだ歯車アイコンをクリックしてください。

下図のようなメニューが表示されるので、まずは「Label」をクリックします。

この Label は、コンテナ一覧で白文字で表示されている箇所で、初期設定だとタグ(mysql:8.0 など) になっています。

今回は ContainerName を選択します。

メニュー画面に戻るので、下図の赤枠部分を参考に、他項目についても変更してください。
Description だけ複数選択です。

全ての設定が完了すると、下記のようにプロジェクトごとにまとめて表示されます。

今回は3つしかないのでメリットが感じにくいですが、コンテナ数が増えてくるとプロジェクトごとにまとまるので、管理がしやすくなります。

色々な項目がありますので、使いやすい組み合わせを探していただければと思います。

4. おわりに

Docker を使い始めた頃はコンテナ数も少なくて、VS Code のコンテナ一覧のことはあまり気にしていなかったのですが、
様々なプロジェクトで使うようになると、コンテナを探すのに少し手間取るようになりました。

ほんの数秒のことだとは思うのですが、パッと見つけたいんですよね。
なので、このプロジェクトごとにグルーピングする機能は助かっています。

ところで Docker Compose のプロジェクト名はネットワーク名にも使用されます。Docker でのネットワーク設定についてはまだ変更等を行ったことがないので、今後勉強を進めていこうと思っています。