docker – 组成不设置环境variables

当我运行docker-compose build && docker-compose up redisdocker-compose.yaml指定的environment docker-compose.yaml RUN env ,我设置的环境variables不会被打印。

为什么这不起作用?

我正在使用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 me@email.com 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"] 

这很正常

docker-compose只在容器的运行阶段设置docker-compose.yaml文件中environment指令中指定的环境variables,而不是在构build阶段。

所以如果你做docker-compose run --entrypoint "/bin/bash" redis -c env你将能够看到你的envvariables。

如果你想在你的Dockerfile中设置variables(为了能够在构build阶段看到它们),你可以在你的RUN env之前添加你的dockerfile:

 ENV FOO bar