【发布时间】:2019-07-06 10:38:23
【问题描述】:
我想根据某些构建 ARG 在我的 Dockerfile 中有条件地设置一些 ENV 变量。由于某种原因,ENV var 没有直接映射到实际的构建 ARG,即我不能执行以下操作:
ARG myvar
ENV MYVAR $MYVAR
这是一个足够复杂的映射,我不能只做,比如“prefix-${$MYVAR}”,或者其他什么。
我知道只使用带有 EXPORT 的 shell 命令(然后可以访问 if 语句),但是以这种方式导出环境变量不会像我需要的那样在容器中持续存在。如果唯一的解决方案是为我需要的每个 RUN/CMD 重复添加所需的 env 前缀(以及到达那里所需的所有逻辑),那么我会接受。
我也知道这个答案Conditional ENV in Dockerfile,它确实有一个解决方案,其中(基本上)三元用于触发某个 ENV 值,但因为我的情况更复杂,我不能只使用它给定的解决方案。
有没有办法在 Dockerfile 中编写“逻辑”,同时仍然可以访问 ENV 等 Docker 命令?
任何帮助将不胜感激!
PS。
这是一个构建Node镜像的Dockerfile,所以我最后几步看起来基本像
RUN npm run build
CMD ["npm", "run", "start"]
【问题讨论】: