docker – 组成不设置环境variables
当我运行docker-compose build && docker-compose up redis
, docker-compose.yaml
指定的environment
docker-compose.yaml
RUN env
,我设置的环境variables不会被打印。
为什么这不起作用?
我正在使用docker-compose
1.4.2版。
这里是相关的文件:
docker-compose.yaml
与environment
作为一个KEY=value
对列表:
redis: build: ../storage/redis ports: - "6379:6379" environment: - FOO='bar'
docker-compose.yaml
与environment
作为字典:
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