将主机环境variables传递给dockerfile
我如何将主机环境variables(如用户和主机名)传递给dockerfile?
例如,如果我的用户名是taha
:
echo $USER taha
我如何编写我的Docker文件来获得相同的输出?
FROM centos:centos7 ARG myuser=$USER CMD echo $myuser
我遇到了同样的问题。 我的解决scheme是提供一个docker-compose.yml中的variables,因为yml支持使用环境variables。
在我看来,这是对我来说最有效的方式,因为我不喜欢在命令行中使用类似docker run -e myuser=$USER . . .
反复inputdocker run -e myuser=$USER . . .
docker run -e myuser=$USER . . .
声明ENV myuser=$USER
将不起作用,在容器中, $myuser
将被设置为null
。
所以你的docker-compose.yml可能看起来像这样:
version: '3' services: app: build: context: . dockerfile: Dockerfile environment: - "myuser=${USER}"
并可以使用简短的命令docker-compose up
运行
要检查variables是否已被应用,运行docker exec -it container-name printenv
来列出容器中的所有variables。
当你启动Docker容器时,你可以使用-e
选项来传递环境variables,如下所示:
docker run -it <image> -e USER=$USER /bin/bash