我使用Docker和Docker-compose构建了一堆nginx + php。
我试图在我的.env
文件中设置时区并在Dockerfile中使用它,但我可能会误解documentation中的某些内容。
.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中手动编写区域,它就可以工作。
答案 0 :(得分:4)
您需要在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
传递给正在运行的容器,而不是传递给构建文件。您需要在args
部分
build