原文: https://blog.csdn.net/luckystar689/article/details/76572046

https://stackoverflow.com/questions/35994349/php-date-timezone-not-found-with-docker-php-fpm

2down voteaccepted

Official PHP Docker Image use /usr/local/etc/php as base folder: see Dockerfile.

'm creating a Symfony environment (PHP-FPM, Nginx, & more) with Docker & Docker-compose.

But, PHP does not use my php.ini and ignores the config (date.timezone parameter is not found in my Symfony application).

Of course, when I go on my container, the date.timezone is correctly set in the 2 php.ini (cli & FPM).

I don't understand why, but it works if I put my php.ini in /usr/local/etc/php/ folder (wtf)

Did I miss something?

docker-compose.yml :

nginx:
image: nginx
volumes:
- "./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro"
links:
- "php:php"
ports:
- "80:80"
- "443:443"
working_dir: "/etc/nginx" php:
build: docker/php
volumes:
- ".:/var/www:rw"
working_dir: "/var/www"

Dockerfile :

FROM php:5-fpm

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update && \
apt-get install -y php5-common php5-fpm php5-cli php5-mysql php5-apcu php5-intl php5-imagick && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN sed -i 's/;date.timezone =/date.timezone = "Europe\/Paris"/g' /etc/php5/fpm/php.ini
RUN sed -i 's/;date.timezone =/date.timezone = "Europe\/Paris"/g' /etc/php5/cli/php.ini RUN usermod -u 1000 www-data

---------------------------------------------------------------------------------

目录

背景

公司做的项目是部署到dockerize的tomcat容器上的,将日志映射到了宿主机器的某个目录下,但是出现了一个问题,那就是日志打印的时间有问题,会比宿主机的时间晚8个小时。

解决方法

一、先查看服务器和容器时区设置是否一致:

1、docker容器内的时区是UTC 
2、主机的时区是CTS

二、这两个时区有什么不同呢?

GPS 系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,地方时为本地时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时

CTS: 
China Standard Time,UTC+8:00 中国沿海时间(北京时间) 
UTC: 
Universal Time Coordinated 世界协调时间

三、如何解决?(设置时区一致)

解决的时候做了三种尝试:

第一次在服务镜像所依赖的镜像tomcat的Dockerfile中加入如下设置:

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
  • 1
  • 2

重新构建镜像,启动容器,发现和此tomcat镜像在同一台服务器上的服务时区和时间均修改成功,但是不在同一台服务器上的docker容器还是UTC时区,时间不一致。

第二次,容器启动的时候挂个参数,让其使用主机服务器上的时间:

docker run -d --name demo-service --rm -p 8084:8080 -v /usr/local/tomcat/logs/tomcat8080:/usr/local/tomcat/logs -v /etc/localtime:/etc/localtime demo-service:1.0.0
  • 1

其中加入的 -v /etc/localtime:/etc/localtime就是时间的设置,设置好后,启动容器,进入容器内部,打date命令,输出的时间和主机时间一样,然后查看tomcat日志,发现日志的时间没有变还是比主机晚8个小时。

于是,寻求另一种解决办法。

第三次,在各个服务的Dockerfile中加入对时区和时间的设置,如第一次尝试的Dockerfile中加入的内容。

重新使用Jenkins构建服务,实验成功!

 

[转]解决Docker容器时间与主机不一致问题的更多相关文章

  1. Docker容器时间与主机时间相差8小时

    查看主机时间 [root@localhost ~]# date 2016年 07月 27日 星期三 22:42:44 CST 查看容器时间 root@b43340ecf5ef:/# date Wed ...

  2. 解决docker容器日志导致主机磁盘空间满了的情况

    日志文件在   /var/lib/docker/containers/<docker_container_id>/   目录下 查看日志大小 vim /opt/docker_log_siz ...

  3. docker容器时间不对及java程序时间不对解决

    使用docker容器部署的应用,会出现时间与主机不一致的情况 1. 容器时间与主机差8个小时:主机的与容器的/etc/localtime不一致 解决方法:挂载主机的/etc/localtime,如果没 ...

  4. 【解决】修改 docker 容器时间与宿主机不同

    修改 docker 容器时间 需求: 这几天,开发提了个需求 "测试需要模拟未来某天的业务,发现容器里面没有修改时间的权限",想在我们 k8s 集群上,调整容器时间 解决方案: 使 ...

  5. Docker容器的跨主机连接

    Docker容器的跨主机连接 Docker容器的跨主机连接 使用网桥实现跨主机容器连接 网络拓扑 网络连接使用的是Bridge 操作 修改/etc/network/interfaces文件,分配静态I ...

  6. docker 容器时间跟宿主机时间同步

    docker 容器时间跟宿主机时间同步 docker cp /etc/localtime 87986863838b:/etc/docker cp /etc/localtime container-na ...

  7. 解决docker容器中Centos7系统的中文乱码

    解决docker容器中Centos7系统的中文乱码问题有如下两种方案: 第一种只能临时解决中文乱码: 在命令行中执行如下命令: # localedef -i zh_CN -f UTF-8 zh_CN. ...

  8. 解决docker容器的窗口大小问题

    解决docker容器的窗口大小问题 最近哥们在是使用docker时,发现有些容器内部窗口大小有问题. 如下午所示,vi窗口只占据左上角一部分.正常情况下vi应该铺满整个窗口才对呀. 所以哥们找到了解决 ...

  9. 关于docker容器访问的主机的端口问题

    docker容器需要访问主机的,不能使用127.0.0.1,127.0.0.1访问的是docker容器不是主机: docker容器创建时会分配一个主机ip,可在主机使用命令 docker inspec ...

随机推荐

  1. 交叉编译VIM并移植到ARM嵌入式Linux系统

    原创作品,允许转载,转载时请务必以超链接形式标明文章.作者信息和本声明,否则将追究法律责任.   众所周知,vim是vi的增强版本,实际体验要比vi好用很多,由于笔者为ARM系统制作的基于busybo ...

  2. 【POJ 2752 Seek the Name, Seek the Fame】

    Time Limit: 2000MSMemory Limit: 65536K Description The little cat is so famous, that many couples tr ...

  3. 【IDEA】IDEA集成Tomcat7插件运行项目

    Maven已经是Java的项目管理标配,如何在JavaEE开发使用Maven调用Web应用,是很多同学关心的问题.本文将介绍,Maven如何介绍Tomcat插件. Maven Tomcat插件现在主要 ...

  4. matlab 分析wav波形

    [x,fs,bits]=wavread('d.wav', [1 5000]); % sound(x, fs, bits); N = length(x); n = 0 : N-1; t = n/fs; ...

  5. 嵌入式Linux上通过boa服务器实现cgi/html的web上网【转】

    转自:http://blog.csdn.net/tianmohust/article/details/6595996 版权声明:本文为博主原创文章,未经博主允许不得转载. 嵌入式Linux上通过boa ...

  6. Linux用户态定时器用法以及犯错总结【转】

    转自:http://blog.csdn.net/csdn_logo/article/details/48525703 版权声明:本文为博主原创文章,欢迎转载,转载请注明出处,多谢合作. 采样的时候要用 ...

  7. java基础练习 12

    public class Twelfth { /*海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五 ...

  8. XML技术总结之XDocument 和XmlDocument

    引言 虽然现在Json在我们的数据交换中越来越成熟,但XML格式的数据还有很重要的地位. C#中对XML的处理也不断优化,那么我们如何选择XML的这几款处理类 XmlReader,XDocument ...

  9. 牛客网练习赛18 A 【数论/整数划分得到乘积最大/快速乘】

    链接:https://www.nowcoder.com/acm/contest/110/A 来源:牛客网 题目描述 这题要你回答T个询问,给你一个正整数S,若有若干个正整数的和为S,则这若干的数的乘积 ...

  10. Wannafly挑战赛22 A-计数器(gcd,裴蜀定理)

    原题地址 题目描述 有一个计数器,计数器的初始值为0,每次操作你可以把计数器的值加上a1,a2,...,an中的任意一个整数,操作次数不限(可以为0次),问计数器的值对m取模后有几种可能. 输入描述: ...