我的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。
编辑:请注意,此解决方案实际上是没有用的,因为您可能无论如何都希望在运行时执行此操作,因为此值应不取决于图像的生成位置,而取决于图像的运行位置。
我个人动议逻辑到您ENTRYPOINT
或CMD
脚本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句