日前在实时容器化过程中出现几次时区问题, 网上流传的挂载
/etc/timezone和/etc/localtime两个文件的方法, 在实际操作中发现并不是均有作用. 故特在此记录一下.
以下使用docker-compose的编排配置文件docker-cpmpose.yaml
MySQL
version: '3.7'
services:
mysql:
image: mysql:5.7.27
environment:
- TZ=Asia/Shanghai
- 验证方式
SELECT NOW();
PostgreSQL
version: '3.7'
services:
postgresql:
image: postgres:11.5
environment:
- TZ=Asia/Shanghai
- 验证方式
SELECT NOW(); - 注意
PostgreSQL在第一次创建时就必须加上上面的环境变量, 初始化后会将时区信息存储到/var/lib/postgresql/data/postgresql.conf文件中, 之后在通过修改环境变量的方式就无法再修改时区, 需要通过改配置文件的方式修改.
Tomcat
version: '3.7'
services:
serve:
image: tomcat:8.5.47-jdk8-openjdk
environment:
- TZ=Asia/Shanghai
- 验证方式
None
Jenkins
version: '3.7'
services:
serve:
image: jenkins/jenkins:2.204
environment:
- JAVA_OPTS= -Duser.timezone=Asia/Shanghai
- 验证方式
Jenkins