Docker-compose:在env文件中设置一个variables并在Dockerfile中使用它

我正在使用Docker和Docker-compose来构build一个nginx + php的堆栈。

我试图在我的.env文件中设置时区并将其用在Dockerfile中,但是我可能会误解文档中的某些内容 。

.ENV

 # Timezone TIMEZONE=Europe/Madrid 

泊坞窗,compose.yml

 version '2' services: php: build: php7-fpm volumes: - ${APP_PATH}:/var/www/app - ./logs:/var/www/logs environment: TIMEZONE: ${TIMEZONE} #[...more.stuff...] 

PHP7-FPM / Dockerfile

 FROM php:7.0-fpm ARG TIMEZONE #[...more.stuff...] ENV TIMEZONE=${TIMEZONE} RUN ln -snf /usr/share/zoneinfo/$TIMEZONE /etc/localtime && echo $TIMEZONE > /etc/timezone RUN printf '[PHP]\ndate.timezone = "%s"\n', $TIMEZONE > /usr/local/etc/php/conf.d/tzone.ini 

时区在容器内没有正确设置(在PHP容器bash中运行php --info | grep timezone )。 如果我在Dockerfile中手动编写区域,它将起作用。

您需要在Docker撰写中传递构build参数

 version '2' services: php: build: dockerfile: php7-fpm args: TIMEZONE: ${TIMEZONE} volumes: - ${APP_PATH}:/var/www/app - ./logs:/var/www/logs 

environment传递给正在运行的容器而不是构build文件。 对于你需要在build部分传递args