当前位置: 首页 > news >正文

Docker容器部署时区问题的坑

为什么80%的码农都做不了架构师?>>>   hot3.png

这两天公司项目部署阿里云k8s器生产环境,底包用的是java:8,Dockerfile文件为:

FROM java:8
VOLUME /var/xxx/xxx-point-log/
COPY app.jar /var/xxx/xxx-point/app.jar
ENV RUN_LIB="/var/xxx/xxx-point/app.jar"

ENV JAVA_OPTS=" -server -Xmx2048m -Xms1500m -Xmn1024m  -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "

RUN sh -c 'touch $RUN_LIB' 
ENTRYPOINT [ "sh", "-c", "nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar $RUN_LIB >/var/xxx/xxx-point-log/xxx-point-log.log 2>&1" ]

联调发现接口输出的时间戳总是比数据库中保存的时间多了8个小时,阿里云的sit和uat环境均没有问题,对比两边环境的时间配置也没发现问题,一时很疑惑。 突然想起来,sit和uat都是用虚机环境,只有生产是docker,结果进docker一看,果然时区不对。网上也很多相关的文章,处理方式也很简单,Dockerfile调整为如下:

FROM java:8
VOLUME /var/xxx/xxx-point-log/
COPY app.jar /var/xxx/xxx-point/app.jar
ENV RUN_LIB="/var/xxx/xxx-point/app.jar"

ENV JAVA_OPTS=" -server -Xmx2048m -Xms1500m -Xmn1024m  -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "

RUN sh -c 'touch $RUN_LIB' \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone
ENTRYPOINT [ "sh", "-c", "nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar $RUN_LIB >/var/xxx/xxx-point-log/xxx-point-log.log 2>&1" ]

解决问题,恢复正常。

该问题记录一下。其实应该很快能发现问题的,然而一开始考虑方向是从在应用层面加入时区设置,结果未成功,浪费了时间。先看看环境上面的问题。

转载于:https://my.oschina.net/tree/blog/1632016

相关文章:

  • 【转】Tesla Model S的设计失误
  • JavaScript 奇技淫巧
  • 测试经验1_2016-2017
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • EF Core:一统SQL和NoSQL数据库
  • linux----------fedora 27 如何启用输入法
  • 蠢蠢欲动的跳槽季
  • 十二周二次课
  • 【面试题】2018年最全Java面试通关秘籍汇总集!
  • Win8Metro(C#)数字图像处理--2.18图像平移变换
  • 银行卡号编码规则
  • iOS开发:瀑布流效果的实现(使用UICollectionView)
  • 666!中国企业凭人脸识别勇夺“金牌”
  • CentOS7.2安装配置nginx+flask+python+uwsgi运行环境
  • 快速理解Linux内核态与用户态
  • 「译」Node.js Streams 基础
  • ES6--对象的扩展
  • iOS 颜色设置看我就够了
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript 基本功--面试宝典
  • QQ浏览器x5内核的兼容性问题
  • Vue组件定义
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 全栈开发——Linux
  • 数据仓库的几种建模方法
  • 移动端解决方案学习记录
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #NOIP 2014# day.2 T2 寻找道路
  • (1)STL算法之遍历容器
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (附源码)计算机毕业设计ssm电影分享网站
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net core 控制台应用程序读取配置文件app.config
  • .NET 材料检测系统崩溃分析
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net快速开发框架源码分享
  • .NET命令行(CLI)常用命令
  • ::什么意思
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ 数据结构 - C++]红黑树RBTree
  • [EFI]英特尔 冥王峡谷 NUC8i7HVK 电脑 Hackintosh 黑苹果efi引导文件
  • [HDU] 1054 Strategic Game 入门树形DP
  • [IE编程] IE8的SDK 下载
  • [IE编程] 多页面基于IE内核浏览器的代码示例
  • [IE技巧] IE 中打开Office文件的设置
  • [Linux] LVS+Keepalived高可用集群部署
  • [Linux] 一文理解HTTPS协议:什么是HTTPS协议、HTTPS协议如何加密数据、什么是CA证书(数字证书)...
  • [luogu P1527]矩阵乘法(矩形k小)