我正在使用Docker和Docker-compose构建一堆nginx + php。
我试图在我的.env文件中设置时区,并在Dockerfile中使用它,但是我可能会误解文档中的内容。
.env
# Timezone TIMEZONE=Europe/Madrid
docker-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 --info | grep timezone在php容器bash中运行)。如果我在Dockerfile中手动编写区域,那么它将起作用。
php --info | grep timezone
您需要在docker compose中传递build参数
version '2' services: php: build: dockerfile: php7-fpm args: TIMEZONE: ${TIMEZONE} volumes: - ${APP_PATH}:/var/www/app - ./logs:/var/www/logs
将environment被传递给正在运行的容器,而不是传递给buildfile。对于需要传递args的build部分
environment
args
build