所以我的Dockerfile是这样写的:
# set env vars for linux user ENV LINUX_USER="kbuser" ... ... # other stuff ... USER kbuser
但是我想用
USER $LINUX_USER
这样,我只需要在文件的一个位置写入用户名即可。但这是行不通的。
我该如何解决?
谢谢。
使用ARG指令。根据文档:
ARG
ARG <name>[=<default value>] ARG指令定义了一个变量,用户可以在构建时使用docker build命令使用该--build-arg <varname>=<value>标志,将其传递给构建器。如果用户指定了未在Dockerfile中定义的构建参数,则构建会输出警告。
ARG <name>[=<default value>]
ARG指令定义了一个变量,用户可以在构建时使用docker build命令使用该--build-arg <varname>=<value>标志,将其传递给构建器。如果用户指定了未在Dockerfile中定义的构建参数,则构建会输出警告。
--build-arg <varname>=<value>
因此,您实际上可以ARG像这样使用:
ARG user=kbuser USER $user
您实际上可以在构建docker映像时设置参数:
docker build --build-arg user=banana .
文档中还有更多内容,因此您最好彻底阅读。