测试给我提了一个bug,发布时间的时候为什么不对呢? 我看了一下, 发布时间与现在的时间一直差8个小时, 后来上网查询, 才知道docker时区和宿主机时区是不相同的.
继续上网查询, 使用挂载方法:
docker run -ti -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime java sleep 1d bash
上面的方法还是不行, 查看了Docker修改默认时区这篇文章之后, 使用它的方法是可行的:
由于我的基础镜像采用的是Alpine系统
所以我在Dockerfile添加了以下的:
RUN apk --no-cache add tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
跑起来之后, 效果与预期一样
-------------------------------------2019.01.28-------------------------------------
由于docker中的mysql是正在运行, 不能删除数据, 需要另外一个方法解决:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
(采用此方法, 重启之后有效)
或者
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
重启容器即可
------------------------------------2019.01.28 下午-----------------------
以下这种方式, Jenkins构建之后跑docker的时候太慢了,用了下面的方法优化(在创建的时候指定参数来解决)
RUN apk --no-cache add tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
# 创建并运行容器,通过 -e TZ="Asia/Shanghai" 设置时区
docker run -e TZ="Asia/Shanghai" -d -p 80:80 --name nginx nginx