gpt4 book ai didi

docker - Dockerfile捕获命令的输出

转载 作者:行者123 更新时间:2023-12-02 18:14:41 26 4
gpt4 key购买 nike

我的Dockerfile中有以下行,该行应捕获主机的显示号:

RUN      DISPLAY_NUMBER="$(echo $DISPLAY | cut -d. -f1 | cut -d: -f2)" && echo $DISPLAY_NUMBER

当我尝试构建Dockerfile时,DISPLAY_NUMBER为空。但是,当我直接在终端中运行同一命令时,却看到了结果。我在这里做错什么了吗?

最佳答案

主机环境变量不能在构建期间传递,只能在运行时传递。

只能通过以下方式指定build args:

首先是“声明arg”

ARG DISPLAY_NUMBER

然后运行
docker build . --no-cache -t disp --build-arg DISPLAY_NUMBER=$DISPLAY_NUMBER

您可以使用 envsubst技巧来解决此问题
RUN      echo $DISPLAY_NUMBER

并在命令行上:
envsubst < Dockerfile | docker build . -f -

它将重写内存中的Dockerfile,并将其更改为环境变量后传递给Docker。

编辑:请注意,此解决方案虽然毫无用处,因为您可能
希望无论如何都要在运行时执行此操作,因为此值不应该取决于镜像的生成位置,而取决于镜像的运行位置。

我个人会将该逻辑移到 ENTRYPOINTCMD脚本中。

关于docker - Dockerfile捕获命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53288189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com