如何更改Docker ENV var?

在构buildDockerfile ,我经常允许在构build期间configuration参数,以便configuration容易构build的稍微不同的容器。 为了达到这个目的,我使用ENVvariables的默认值和用户可定义的ARG 。 示例Dockerfile快速testing:

 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//' 

我面临的问题是,我不知道如何pipe道和删除国旗。 我知道我可以在使用RUN这样做,但是我必须重复使用每个RUN语句的sed用法,因此不能使其重复。

编辑:在阅读关于这个AskUbuntu的答案的 shellvariablesreplace之后,我试了一下:

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

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

 Missing ':' in substitution: "${FLAGS:-}" | "${FLAGS//--fully-static/}" 

首先我发现Docker只支持有限的bash variablesreplace方法 。 最后,我可以在Docker GitHub Repo中findshell_parser.go文件,清楚地知道:必须在那里,在第一步中主动杀死这条path。