I'm using Docker and Docker-compose to build a stack of nginx+php.
I'm trying to set the timezone in my .env
file and use it in a Dockerfile, but I might be missunderstanding something from the documentation.
.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
The timezone is not set properly inside the container (running php --info | grep timezone
inside the php container bash). If I write the zone manually in the Dockerfile, it works.
You need to pass the build argument in docker compose
version '2'
services:
php:
build:
dockerfile: php7-fpm
args:
TIMEZONE: ${TIMEZONE}
volumes:
- ${APP_PATH}:/var/www/app
- ./logs:/var/www/logs
The environment
are passed to the running container and not to the buildfile. For the you need to pass args
in the build
section
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With