docker-compose没有设置环境变量

Nei*_*eil 8 docker docker-compose

当我运行时docker-compose build && docker-compose up redis,在environment指定的docker-compose.yamlRUN envDockerfile,我设置的环境变量不会被打印.

为什么这不起作用?

我正在使用docker-compose1.4.2版.

以下是相关文件:

docker-compose.yamlenvironment作为列表KEY=value对:

redis:
    build: ../storage/redis
    ports:
      - "6379:6379"
    environment:
      - FOO='bar'
Run Code Online (Sandbox Code Playgroud)

docker-compose.yamlenvironment作为词典:

redis:
    build: ../storage/redis
    ports:
      - "6379:6379"
    environment:
      - FOO: 'bar'
Run Code Online (Sandbox Code Playgroud)

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"]
Run Code Online (Sandbox Code Playgroud)

Aur*_*ini 8

那很正常

docker-compose仅在容器的运行阶段而不是在构建阶段environment设置docker-compose.yaml文件中的指令中指定的环境变量。

因此,如果您这样做docker-compose run --entrypoint "/bin/bash" redis -c env,将可以看到您的env变量。

如果要在Dockerfile中设置变量(以便在构建阶段能够看到它们),可以在Dockerfile中添加以下内容RUN env

ENV FOO bar
Run Code Online (Sandbox Code Playgroud)