docker-compose没有从环境变量设置container_name。

4

我正在编写一个docker-compose文件,需要从环境变量中指定容器名称

我的docker-compose.yml文件如下所示:

version: '3.0'
services:
  jenkins:
  environment:
    - INSTANCE_NAME=team_1
  image: my_image
  container_name: container_$INSTANCE_NAME
  ports:
    - "80:80"
  expose:
    - "80"

我认为,当我运行 docker-compose up 时,它应该创建名为 container_team_1 的容器,但实际上它以 contaner_ 的形式运行。

我还尝试使用 .env 文件,但仍然无法在 container_name 中使用环境变量,

尽管,如果我运行 docker-compose config,我可以看到所有变量设置如下,

container_name: container_
environment:
  COMPANY_NAME: team_1

但实际上它并没有附加在容器名称中。
2个回答

1
你不能在docker-compose.yml中使用环境变量进行变量替换
默认情况下,Docker Compose使用.env文件,因此在定义.env文件时应该可以工作。
INSTANCE_NAME=team_1

然后运行 docker-compose up

1
抱歉,但变量替换会从 shell 环境变量中获取值,而不是 .env 文件。来自 docker-compose 文档:Compose 使用在运行 docker-compose 的 shell 环境中的变量值。 - Thiago Almeida
3
你可以使用 .env 文件来设置环境变量的默认值,Compose 将自动查找该文件。在 shell 环境中设置的值将覆盖在 .env 文件中设置的值。 - Lauri

1
我可以看到在docker-compose文档的变量替换部分,你需要在运行docker-compose up的shell中设置$INSTANCE_NAME,因为:

Compose使用docker-compose运行时的shell环境中的变量值。

首先,执行以下操作:
export INSTANCE_NAME=my_instance`

然后:

docker-compose up

最好的问候。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接