1、问题背景
需要使用locust做性能测试,因为环境问题,最终决定使用docker,输出的结果有html 和 csv文件,发现:html时间不正确,csv时间正确
2、解决过程
(1)首先怀疑机器时间问题,通过查看,时间正确。(就没有再考虑时区问题,殊不知docker和运行docker的机器时间可能是不同的)
(2)在网上各种搜索,也没发现别人有同样的问题
(3)准备看源码了,还专门找了个前端同事帮忙看下,也未发现问题,但是提供了一个思路,在本地环境测试下,不在docker上
(4)在本地环境(不是docker)测试后,发现html时间展示正确,此时思路逐渐清晰,问题的症结在docker的时区
(5)找到根源原因后,开始搜索如何docker时间同步,目前验证后,以下两种方案可行:
由于使用的是docker-compose,以下方案均是在docker-compose.yaml文件中处理:
方案一:利用文件挂载,达到同步时间目的
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
方案二:环境变量
environment:
TZ: Asia/Shanghai
补充:
Dockerfile中通过ENV修改时区
ENV TZ="Asia/Shanghai"
其他方式docker时间同步,可参考 https://www.jianshu.com/p/43e5d72b0f63