2017-10-09 181 views
0

我的Dockerfile有一個奇怪的行爲。我儘量做到寫入文件與文本從環境來varibales:Dockerfile和環境變量

FROM ubuntu:14.04 

ENV KEY '' 
ENV VAL '' 

RUN echo "${KEY}:${VAL}" > /etc/test 

CMD [] 

我建立了這個形象,像這樣運行:

docker run -it --rm -e KEY=aaa -e VAL=bbb mytest 

如果我顯示的/ etc/test文件,它是空的(它是存在的,但是空的)。看起來,當它創建文件時,環境變量沒有設置。

有什麼想法?

謝謝

回答

2

在泊塢窗文件RUN echo "${KEY}:${VAL}" > /etc/test的命令時,你建立使用docker build ...

因此,這是合乎邏輯的,因爲在這一點上ENV變量是空的圖像被執行。 您需要將commad移動到將在圖像啓動時運行的CMD命令。

0

您可以將KEY和VALUE定義爲參數,並在構建泊塢窗圖像時設置它們的值。

FROM ubuntu:14.04 

ARG KEY 
ARG VAL 

RUN echo "${KEY}:${VAL}" > /etc/test 

CMD [] 

然後你可以使用這樣構建映像:

docker build --build-arg KEY=<value> --build-arg VAL=<value> . 

https://docs.docker.com/engine/reference/builder/#using-arg-variables

+0

嗯...這意味着你需要爲你鍵值對建立儘可能多的圖像。在我的情況下,爲什麼不... – Cabrinha

+0

如果您更喜歡構建單個圖像,並在運行時更改KEY和VAL值,則可以創建腳本並將其作爲入口點運行,並將值作爲環境變量傳遞給泊塢窗容器。 –