小编典典

Docker上的Dockerfile传递环境组成构建

docker

我写了一个Dockerfile使用两个参数的:

FROM jessie
MAINTAINER Zeinab Abbasimazar
#Build Arguments
ARG REP_USER
ARG REP_PASS
# Build
RUN echo 'REP_USER:'$REP_USER', REP_PASS:'$REP_PASS

我写了一个docker-compose.ymlfor build:

version: "2"
services:
  ui:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        REP_USER: $REP_USER
        REP_PASS: $REP_PASS

我不想直接在compose文件中定义这些参数,因此我尝试在docker compose构建期间发送它们:

REP_USER=myusername REP_PASS=mypassword docker-compose build

哪个没有用。我更改Dockerfile为将这些参数用作环境变量。所以我删除了几ARG行:

FROM jessie
MAINTAINER Zeinab Abbasimazar
# Build
RUN echo 'REP_USER:'$REP_USER', REP_PASS:'$REP_PASS

docker-compose.yml

version: "2"
  services:
    ui:
      build:
        context: .
        dockerfile: Dockerfile

跑了REP_USER=myusername REP_PASS=mypassword docker-compose build; 仍然没有结果。

我还尝试将这些信息保存到env文件中:

version: "2"
services:
  ui:
    build:
      context: .
      dockerfile: Dockerfile
    env_file:
      - myenv.env

但是,似乎env文件在构建时不会受到影响。他们只是参与运行时间。

编辑1:

Docker版本1.12.6不支持使用传递参数--build-arg

编辑2:

我尝试.env按照此处所述使用文件:

cat .env 
REP_USER=myusername
REP_PASS=mypassword

然后我打电话给docker-compose config哪个返回:

networks: {}
services:
  ui:
    build:
      args:
        REP_PASS: mypassword
        REP_USER: myusername
      context: /home/zeinab/Workspace/ZiZi-Docker/Test/test-exec-1
      dockerfile: Dockerfile
version: '2.0'
volumes: {}

这意味着这解决了我的问题。

编辑3:

我也尝试过的第三部分泊坞窗,撰写ARG文件在我的docker-compose.yml文件:

version: "2"
services:
  ui:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        - REP_USER
        - REP_PASS

并执行:

export REP_USER=myusername;export REP_PASS=mypassword;sudo docker-compose build --no-cache

仍然没有得到我想要的。


阅读 342

收藏
2020-06-17

共1个答案

小编典典

我终于找到了解决方案。我在问题中也提到了它。我首先尝试失败,然后发现我有一个错字命名.env文件。是.evn

我尝试.env按照此处所述使用文件:

cat .env 
REP_USER=myusername
REP_PASS=mypassword

然后我打电话给docker-compose config哪个返回:

networks: {}
services:
  ui:
    build:
      args:
        REP_PASS: mypassword
        REP_USER: myusername
      context: /home/zeinab/Workspace/ZiZi-Docker/Test/test-exec-1
      dockerfile: Dockerfile
version: '2.0'
volumes: {}
2020-06-17