如何在 Dockerfile 中定义变量?

新手上路,请多包涵

在我的 Dockerfile 中,我想定义以后可以在 Dockerfile 中使用的变量。

我知道 ENV 指令,但我不希望这些变量成为环境变量。

有没有办法在 Dockerfile 范围内声明变量?

原文由 Maxime 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 834
2 个回答

您可以使用 ARG - 请参阅 https://docs.docker.com/engine/reference/builder/#arg

ARG 指令定义了一个变量,用户可以在构建时使用 docker build 命令使用 --build-arg <varname>=<value> 标志将其传递给构建器。如果用户指定了未在 Dockerfile 中定义的构建参数,则构建会输出错误。

可以在构建期间与 COPY 一起使用(例如,复制特定文件夹等标签特定内容)例如:

 ARG MODEL_TO_COPY
COPY application ./application
COPY $MODEL_TO_COPY ./application/$MODEL_TO_COPY

在构建容器时:

 docker build --build-arg MODEL_TO_COPY=model_name -t <container>:<model_name specific tag> .

原文由 lumos0815 发布,翻译遵循 CC BY-SA 4.0 许可协议

要回答您的问题:

在我的 Dockerfile 中,我想定义以后可以在 Dockerfile 中使用的变量。

你可以定义一个变量:

 ARG myvalue=3

等号周围不允许有空格。

稍后将其用于:

 RUN echo $myvalue > /test

原文由 Ortomala Lokni 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题