我寫了一個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.yml
的構建:
version: "2"
services:
ui:
build:
context: .
dockerfile: Dockerfile
args:
REP_USER: $REP_USER
REP_PASS: $REP_PASS
我不想定義這些參數直接在撰寫文件中,所以我試圖在碼頭工作人員撰寫構建時發送它們:
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:
泊塢版本1.12.6
不支持傳遞參數與--build-arg
。
編輯2:
我嘗試使用.env
文件描述here:
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 documentation第三部分我docker-compose.yml
文件:
並執行:
export REP_USER=myusername;export REP_PASS=mypassword;sudo docker-compose build --no-cache
還是沒有得到我想要的東西。
我的碼頭版本是'1.12.6',不支持。 –
要壞。更新是沒有選擇的?在「正常」的Linux中,你可以把'docker-compose'的最新版本放到'$ HOME/bin'中,並且它應該被執行而不是系統默認。 – fzgregor
我會檢查是否可以更新;並非所有的工作方法都在我的辦公室掌控之中。 –