docker — настройка часового пояса в докеризованном Nginx + PHP-FPM

Мне нужно установить часовой пояс по умолчанию в Dockerfile. У меня есть два контейнера (nginx и php7-fpm).

Когда я вхожу в bash контейнера PHP и запускаю php --info | grep timezone Я получил:

Часовой пояс по умолчанию => UTC

date.timezone => нет значения => нет значения

Мои докер-файлы следующие:

Nginx / Dockerfile:

FROM debian:jessie

RUN apt-get update && apt-get install -y nginx

ADD nginx.conf /etc/nginx/
ADD site.conf /etc/nginx/sites-available/

RUN ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site
RUN rm /etc/nginx/sites-enabled/default

RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf

RUN usermod -u 1000 www-data

CMD ["nginx"]

EXPOSE 80
EXPOSE 443

PHP-FPM / Dockerfile:

FROM php:7.0-fpm

RUN apt-get update && apt-get install -y git unzip

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer --version

RUN rm /etc/localtime
RUN ln -s /usr/share/zoneinfo/Europe/Madrid /etc/localtime
RUN "date"
RUN docker-php-ext-install pdo pdo_mysql

RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
RUN echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.idekey=\"PHPSTORM\"" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_port=9001" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

WORKDIR /var/www/site

Я пытался использовать ответы на подобные вопросы безрезультатно.

Примечание: я использую docker-compose build а также docker-compose up -d запустить полный стек, который точно этот.

4

Решение

Существует два типа настроек часового пояса. Одним из них является системный уровень. Это вы можете установить с помощью /etc/localtime

Смотрите шаги Dockerfile ниже

ENV TZ=America/Los_Angeles
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

PS: взято из https://serverfault.com/questions/683605/docker-container-time-timezone-will-not-reflect-changes

Также вы можете сослаться на другую статью Использование docker-compose для установки часовых поясов контейнеров

Далее идет настройка уровня PHP / APP. Для этого вы можете создать INI-файл. Что можно сделать, добавив нижнюю строку в Dockerfile

RUN printf '[PHP]\ndate.timezone = "US/Central"\n' > /usr/local/etc/php/conf.d/tzone.ini
6

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector