Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

背景

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

参考

willgate
ウィルゲートが理想とする社会は、一人ひとりが自身の『will(意志、想い、やりたいこと)』を実現できる社会です。
https://willgate.co.jp/
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした