作者:神秘怪我咯_525 | 来源:互联网 | 2023-01-20 22:26
我写了一个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.yml
for build:
version: "2"
services:
ui:
build:
context: .
dockerfile: Dockerfile
args:
REP_USER: $REP_USER
REP_PASS: $REP_PASS
我不想直接在compose文件中定义这些参数,所以我尝试在docker compose build期间发送它们:
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:
我还在我的文件中尝试了第三部分docker-compose 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
仍然没有得到我想要的东西.