2015-10-13 182 views
4

當我運行docker-compose build && docker-compose up redis,environmentdocker-compose.yamlRUN envDockerfile中指定的環境變量I set不會打印。docker-compose未設置環境變量

爲什麼這不起作用?

我正在使用docker-compose版本1.4.2。

以下是相關文件:

docker-compose.yamlenvironment作爲KEY=value對列表:

redis: 
    build: ../storage/redis 
    ports: 
     - "6379:6379" 
    environment: 
     - FOO='bar' 

docker-compose.yamlenvironment作爲詞典:

redis: 
    build: ../storage/redis 
    ports: 
     - "6379:6379" 
    environment: 
     - FOO: 'bar' 

Dockerfile

FROM redis:2.6 
MAINTAINER [email protected] 

RUN mkdir -p /var/redis && chown -R redis:redis /var/redis 

RUN echo '-------------- env ---------------' 
RUN env 

COPY redis.conf /usr/local/etc/redis/redis.conf 
EXPOSE 6379 
ENTRYPOINT ["redis-server", "/usr/local/etc/redis/redis.conf"] 

回答

3

這在構建階段是正常的

docker-compose只設置在容器的運行階段在docker-compose.yaml文件中environment指令指定的環境變量,而不是。

所以,如果你做docker-compose run --entrypoint "/bin/bash" redis -c env,你將能夠看到你的env變量。

如果你想設置你的Dockerfile內部變量(要能看到他們在構建階段),您可以將您的RUN env之前,您dockerfile裏面添加:

ENV FOO bar 
+0

當我運行'$搬運工,撰寫運行redis env',我得到:'***致命配置文件錯誤*** 讀取配置文件,在行493 >>>'「env」' 錯誤的指令或錯誤的參數數量1' – Neil

+0

嗯好對不起沒有看到你改變了入口點。在你的情況下'docker-compose運行redis/bin/bash -c env' @Neil –

+0

我編輯了我的答案以反映更改 –