如何将主机环境变量(例如用户名和主机名)传递给dockerfile?
例如,如果我的用户名是taha:
taha
echo $USER taha
如何编写Docker文件以获得相同的输出?
FROM centos:centos7 ARG myuser=$USER CMD echo $myuser
我遇到了同样的问题。我的解决方案是在docker-compose.yml内部提供变量,因为yml支持使用环境变量。
我认为这对我来说是最有效的方式,因为我不喜欢在命令行中使用类似以下内容一遍又一遍地键入它 docker run -e myuser=$USER . . .
docker run -e myuser=$USER . . .
ENV myuser=$USER在容器中,声明将无效,$myuser将设置为null。
ENV myuser=$USER
$myuser
null
因此,您的docker-compose.yml可能看起来像这样:
version: '3' services: app: build: context: . dockerfile: Dockerfile environment: - "myuser=${USER}"
并可以使用short命令运行 docker-compose up
docker-compose up
要检查是否已应用变量,请运行docker exec -it container-name printenv以列出容器中的所有变量。
docker exec -it container-name printenv