前言
部署的docker容器一定要是東八時區,纔不至於導致程序部署時間錯誤,從而引起簡單而又致命的錯誤。
配置
宿主機配置東八時區
詳見: centos7下配置中國時區
docker-compose.yml文件配置東八時區上海時間
version: "3.5"
services:
mysql:
image: mysql:5.7
environment: #設置東八時區上海時間
- SET_CONTAINER_TIMEZONE=true
- CONTAINER_TIMEZONE=Asia/Shanghai
volumes: #掛載宿主機東八時區
- /etc/localtime:/etc/localtime:ro
應用示例
version: "3.5"
services:
mysql:
image: mysql:5.7
container_name: mysql5.7
hostname: mysql5.7
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=nature
- MYSQL_USER=nature
- MYSQL_PASSWORD=root@1234
- MYSQL_ROOT_PASSWORD=nature@1234
- SET_CONTAINER_TIMEZONE=true
- CONTAINER_TIMEZONE=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro
- /home//mysql:/var/lib/mysql:Z
command: ["--character-set-server=utf8mb4","--collation-server=utf8mb4_unicode_ci","--lower-case-table-names=1"]
restart: always
tty: true
結語
亦可在Dockerfile文件構建鏡像中解決時區的問題,docker run容器時,就不需要設置這些參數。