Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
31
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@okashoi

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

背景

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 を使って設定する変数とは別のものである(慣れないと混乱しがち)。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
31
Help us understand the problem. What are the problem?