2

我对 docker compose 有疑问,我想使用内部容器变量来创建另一个变量:

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

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

我想要类似的东西:

39ed52c98e92_var1
4

1 回答 1

1

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

#!/bin/sh

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

要使用它,您的 Dockerfile 将有两行额外的行:

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

确保chmod 755 entrypoint.sh在运行您的docker build.


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

于 2017-06-08T13:52:55.217 回答