一尘不染

我可以在Dockerfile USER语句中使用环境变量吗?

docker

所以我的Dockerfile是这样写的:

# set env vars for linux user
ENV LINUX_USER="kbuser"
...
... # other stuff
...
USER kbuser

但是我想用

USER $LINUX_USER

这样,我只需要在文件的一个位置写入用户名即可。但这是行不通的。

我该如何解决?

谢谢。


阅读 259

收藏
2020-06-17

共1个答案

一尘不染

使用ARG指令。根据文档:

ARG <name>[=<default value>]

ARG指令定义了一个变量,用户可以在构建时使用docker build命令使用该--build-arg <varname>=<value>标志,将其传递给构建器。如果用户指定了未在Dockerfile中定义的构建参数,则构建会输出警告。

因此,您实际上可以ARG像这样使用:

ARG user=kbuser
USER $user

您实际上可以在构建docker映像时设置参数:

docker build --build-arg user=banana .

文档中还有更多内容,因此您最好彻底阅读。

2020-06-17