如何更改Docker ENV var?
在构buildDockerfile
,我经常允许在构build期间configuration参数,以便configuration容易构build的稍微不同的容器。 为了达到这个目的,我使用ENV
variables的默认值和用户可定义的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。
- 如何在MAC上设置DOCKER_HOST envvariables
- Docker用env_file参数指定的环境variables在dockerfile中不工作
- docker-compose的环境variables在Jenkins里面
- ENV 。编码返回#<Encoding:ASCII-8BIT>在生产时被分配一个Unicodestring
- docker-compose,导出environnementvariables在Jenkins中不起作用
- 在docker-compose.yml文件中获取或设置envvariables
- PHP-docker容器中的环境variables
- 在CMD之前执行一个脚本
- 无法使用默认的postgresql docker镜像创build数据库