当前位置:  开发笔记 > 运维 > 正文

Dockerfile:将RUN指令输出到变量中

如何解决《Dockerfile:将RUN指令输出到变量中》经验,为你挑选了1个好方法。



1> Andy Shinn..:

您无法保存变量以供以后在其他Dockerfile命令中使用(如果这是您的意图).这是因为每个都RUN发生在一个新的shell中.

但是,如果您只想捕获输出,则ls应该能够在一个RUN复合命令中执行此操作.例如:

RUN file="$(ls -1 /tmp/dir)" && echo $file

或者只使用子shell内联:

RUN echo $(ls -1 /tmp/dir)

希望这有助于您的理解.如果您有实际的错误或问题要解决,我可以扩展这个而不是假设的答案.

一个完整的例子Dockerfile证明了这一点:

FROM alpine:3.7
RUN mkdir -p /tmp/dir && touch /tmp/dir/file1 /tmp//dir/file2
RUN file="$(ls -1 /tmp/dir)" && echo $file
RUN echo $(ls -1 /tmp/dir)

在构建时,您应该看到步骤3和4输出变量(其中包含步骤2 中的列表file1file2创建):

$ docker build --no-cache -t test .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM alpine:3.7
 ---> 3fd9065eaf02
Step 2/4 : RUN mkdir -p /tmp/dir && touch /tmp/dir/file1 /tmp//dir/file2
 ---> Running in abb2fe683e82
Removing intermediate container abb2fe683e82
 ---> 2f6dfca9385c
Step 3/4 : RUN file="$(ls -1 /tmp/dir)" && echo $file
 ---> Running in 060a285e3d8a
file1 file2
Removing intermediate container 060a285e3d8a
 ---> 2e4cc2873b8c
Step 4/4 : RUN echo $(ls -1 /tmp/dir)
 ---> Running in 528fc5d6c721
file1 file2
Removing intermediate container 528fc5d6c721
 ---> 1be7c54e1f29
Successfully built 1be7c54e1f29
Successfully tagged test:latest

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有