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 后面的行中使用那个变量。
我在使用 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 后面的行中使用那个变量。