加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – 如何更改Docker ENV var?

发布时间:2020-12-15 22:55:28 所属栏目:安全 来源:网络整理
导读:在构建Dockerfile时,我经常允许在构建期间配置参数,以便更容易构建稍微不同的容器.为实现这一点,我使用ENV变量的默认值和用户可定义的ARG.示例Dockerfile快速测试: FROM busyboxARG FLAGSENV FLAGS ${FLAGS:-}RUN echo "${FLAGS}" 这可以像这样使用: docke
在构建Dockerfile时,我经常允许在构建期间配置参数,以便更容易构建稍微不同的容器.为实现这一点,我使用ENV变量的默认值和用户可定义的ARG.示例Dockerfile快速测试:

FROM busybox
ARG FLAGS
ENV FLAGS ${FLAGS:-}
RUN echo "${FLAGS}"

这可以像这样使用:

docker build --build-arg FLAGS="foo --remove-me" -t <imagename>:<tag> .

现在我发现自己处于这样的情况:我确实想要从我允许运行的命令中主动删除特定标志(在上面的示例中: – remove-me)(由于一年多以来没有修复的错误).虽然我知道如何在其他情况下删除标志:

LC_ALL=C sed -e 's/ --remove-me//'

我面临的问题是我不知道如何管道和删除标志.我知道我可以在使用RUN时执行此操作,但是我必须在每个RUN语句上重复使用上面的sed用法,因此不能使其重复.

解决方法

在阅读了 this AskUbuntu answer中的shell变量替换后,我试了一下:

ENV FLAGS ${FLAGS//--fully-static/}

但是,我遇到了以下错误:

06001

首先我发现Docker只支持bash variable replacement methods的有限位.最后我可以在Docker GitHub Repo中找到shell_parser.go文件,其中很明显:必须在那里,它会在第一个路径中主动杀死沿着这条路线的任何努力步.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读