小编典典

将主机环境变量传递给dockerfile

docker

如何将主机环境变量(例如用户名和主机名)传递给dockerfile?

例如,如果我的用户名是taha

echo $USER
taha

如何编写Docker文件以获得相同的输出?

FROM centos:centos7   
ARG myuser=$USER  
CMD echo $myuser

阅读 471

收藏
2020-06-17

共1个答案

小编典典

我遇到了同样的问题。我的解决方案是在docker-compose.yml内部提供变量,因为yml支持使用环境变量。

我认为这对我来说是最有效的方式,因为我不喜欢在命令行中使用类似以下内容一遍又一遍地键入它 docker run -e myuser=$USER . . .

ENV myuser=$USER在容器中,声明将无效,$myuser将设置为null

因此,您的docker-compose.yml可能看起来像这样:

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
       - "myuser=${USER}"

并可以使用short命令运行 docker-compose up

要检查是否已应用变量,请运行docker exec -it container-name printenv以列出容器中的所有变量。

2020-06-17