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. 下準備
動作確認に使用した docker-compose ファイルです。
説明の便宜上 my_docker フォルダの中に入れていますが、別のフォルダ名で差支えありません。
また使用しているイメージについても特別な意味はありません。
説明上3つぐらいコンテナが欲しかったので、僕が慣れている組み合わせにしました。
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 に " (ダブルクォート)を入れてエラーが出た時の対応方法」をご覧ください。
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
- Use -p to specify a project name (Overview of docker-compose CLI | Docker Documentation)
- https://docs.docker.com/compose/reference/overview/#use--p-to-specify-a-project-name
- COMPOSE_PROJECT_NAME (Compose CLI environment variables | Docker Documentation)
- https://docs.docker.com/compose/reference/envvars/#compose_project_name
3. VS Code 「Docker」拡張の設定方法
VS Code の Docker Extension にはコンテナの一覧表示があります。下図は初期設定で表示しているものですが、表示内容を変更することができます。
まずは赤枠で囲んだ歯車アイコンをクリックしてください。
下図のようなメニューが表示されるので、まずは「Label」をクリックします。
この Label は、コンテナ一覧で白文字で表示されている箇所で、初期設定だとタグ(mysql:8.0 など) になっています。
今回は ContainerName を選択します。
メニュー画面に戻るので、下図の赤枠部分を参考に、他項目についても変更してください。
Description だけ複数選択です。
全ての設定が完了すると、下記のようにプロジェクトごとにまとめて表示されます。
今回は3つしかないのでメリットが感じにくいですが、コンテナ数が増えてくるとプロジェクトごとにまとまるので、管理がしやすくなります。
色々な項目がありますので、使いやすい組み合わせを探していただければと思います。
4. おわりに
Docker を使い始めた頃はコンテナ数も少なくて、VS Code のコンテナ一覧のことはあまり気にしていなかったのですが、
様々なプロジェクトで使うようになると、コンテナを探すのに少し手間取るようになりました。
ほんの数秒のことだとは思うのですが、パッと見つけたいんですよね。
なので、このプロジェクトごとにグルーピングする機能は助かっています。
ところで Docker Compose のプロジェクト名はネットワーク名にも使用されます。Docker でのネットワーク設定についてはまだ変更等を行ったことがないので、今後勉強を進めていこうと思っています。
- Networking in Compose | Docker Documentation
- https://docs.docker.com/compose/networking/