LoginSignup
59
44

More than 5 years have passed since last update.

【Docker Compose】container_name ではなくて COMPOSE_PROJECT_NAME 変数を使うと良さそう

Posted at

背景

docker-compose.yml 内で container_name を指定することで、コンテナ名を明示することができる。

docker-compose.yml
version: "3"

services:
    web:
        container_name: myapp_web
        image: php:7.1-apache

上記 docker-compose.yml が置いてある場所で docker-compose up すると myapp_web という名前でコンテナが立ち上がる。

しかし、これでは名前の重複によって、同じコンテナを複数立ち上げることができない。

そこで COMPOSE_PROJECT_NAME 変数の出番

一方で container_name を指定しない場合、コンテナ名は自動的に「COMPOSE_PROJECT_NAME 変数 + _ + サービス名 + _ + 連番」となる。

つまり

docker-compose.yml
version: "3"

services:
    web:
        image: php:7.1-apache
.env
COMPOSE_PROJECT_NAME=myapp

のようにして docker-compose up を実行すると、自動的に myapp_web_1 という名前がつけられたコンテナが立ち上がってくれる。

コンテナ名を決める要素を .env に切り出せる、名前が機械的に決定される、という意味でもこの方法が好ましそう。

余談

この COMPOSE_PROJECT_NAME 変数はコンテナ内からは参照できない。

docker コマンドを叩くときの変数ではなく、docker-compose コマンド自体を叩くときの変数だからである。

なので docker-compose.yml 内で env_fileenvironmet を使って設定する変数とは別のものである(慣れないと混乱しがち)。

参考

59
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
59
44