日前在实时容器化过程中出现几次时区问题, 网上流传的挂载
/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