代码之家  ›  专栏  ›  技术社区  ›  ceving

如何区分Dockerfile中的build和run?[复制品]

  •  1
  • ceving  · 技术社区  · 6 年前

    这个问题已经有了答案:

    在构建容器期间,我需要设置一个代理环境变量。但在容器运行时,不能设置代理环境变量。

    我已经在dockerfile中使用env命令来设置变量。但这会在容器的生成和运行期间设置变量。就我所见,DoCKFr档不支持对Env命令的未设置。

    如何为生成而不是运行指定环境?

    2 回复  |  直到 6 年前
        1
  •  1
  •   yamenk    6 年前

    您需要使用的是未在映像中持久化的构建参数。文档部分 Set build-time variables (--build-arg )准确描述了您想要的:

    可以使用DOCKFrm中的Env指令定义变量 价值观。这些值将保留在生成的图像中。然而,通常 坚持不是你想要的。用户希望指定变量 这取决于它们在哪个主机上构建映像。

    一个很好的例子是用于拉取 中间文件。arg指令允许dockerfile作者定义 用户可以使用-Bug ARG标志在构建时设置的值:

    FROM alpine
    
    ARG hello
    RUN env # This will output hello=world
    
    CMD env # When running the container, there is not env variable "hello"
    

    docker build --build-arg hello=world -t test . # This will output hello=world env variable
    docker run test # There is no env variable "hello"
    

    正如你在上面看到的 hello 仅在生成时显示为环境变量。它不会在图像中持久化,因此不会显示 docker run

        2
  •  0
  •   Connor Dickson    6 年前

    为什么不将变量设置为空或空?它仍然存在,但不会有一个在运行时可以解释的值。