Docker 组成变量

Docker compose variables

我在使用 docker compose 时遇到问题,我想使用内部容器变量创建另一个变量:

  myapp:
image: image
depends_on:
  - anotherimage
environment:
  - "VAR1=var1"
  - "VAR2=${HOSTNAME}_${VAR1}"

我在 VAR2 中得到的是 docker 引擎主机的主机名,而 VAR1 没有

我想要这样的东西:

39ed52c98e92_var1

Docker-compose 从您 运行 命令所在的环境中解析 compose 文件中的变量,而不是从容器内部。如果你想从容器内部配置你的环境,你需要将它添加到命令或入口点你的容器 运行s。如果您还没有入口点,您可以创建一个:

#!/bin/sh

export VAR2=${HOSTNAME}_${VAR1}
exec "$@"

要使用它,您的 Docker 文件将有两行:

COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

确保 chmod 755 entrypoint.sh 在 运行 之前 docker build


编辑:VAR1 未在您的 yml 中解析是一个类似的问题。每个变量都由 docker-compose 为容器定义,但这不会更改 docker-compose 正在使用的主机上的环境。所以你不能在 yml 后面的行中使用那个变量。