我写了一个Dockerfile使用两个参数的:
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:
docker-compose.yml
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行:
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文件中:
env
version: "2" services: ui: build: context: . dockerfile: Dockerfile env_file: - myenv.env
但是,似乎env文件在构建时不会受到影响。他们只是参与运行时间。
编辑1:
Docker版本1.12.6不支持使用传递参数--build-arg。
1.12.6
--build-arg
编辑2:
我尝试.env按照此处所述使用文件:
.env
cat .env REP_USER=myusername REP_PASS=mypassword
然后我打电话给docker-compose config哪个返回:
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
仍然没有得到我想要的。
我终于找到了解决方案。我在问题中也提到了它。我首先尝试失败,然后发现我有一个错字命名.env文件。是.evn。
.evn