2015-10-13 141 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

我编辑了我的答案以反映更改 –