微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在dockerized Nginx PHP-FPM中配置时区

我需要在Dockerfile中设置认时区.我有两个容器(NginxPHP7-fpm).

当我进入PHP容器的bash并运行PHP –info | grep timezone我得到:

Default timezone => UTC

date.timezone => no value => no value

我的dockerfiles如下:

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来运行完整的堆栈,这正好是this one.

解决方法:

有两种类型的时区设置.一个是系统级别.您可以使用/ 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开始

您也可以参考另一篇文章Using docker-compose to set containers timezones

接下来是PHP / APP级别设置.为此,您可以创建一个ini文件.这可以通过在Dockerfile中添加以下行来完成

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐