前言
我使用账号登陆vuecms.cn网站,查看登陆日志,发现所有时间全部少8个小时。懵逼树上懵逼果,懵逼树下你和我…
我的开源网站后端是基于nestjs,数据库使用typeorm进行连接操作
原因分析:
原因一:
docker环境与本地环境时区不一样
原因二:
使用typeorm操作mysql时插入和修改时间与本地时间不一样
解决方案:
1.修改dockerfile文件,设置中国时区
...
# 添加时区环境变量,亚洲,上海
ENV TIME_ZONE Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime
...
其他详细配置查看我的开源项目源码:https://gitee.com/derekgo/vue-cms_xg/blob/master/node_nest/Dockerfile
2.运行docker镜像时,设置中国时区
修改时区
timedatectl set-timezone Asia/Shanghai
通过timedatectl查看时区
运行时配置时区
docker run -v /etc/localtime:/etc/localtime:ro --restart=always --name vue-cms-nestjs(docker镜像名称) -d -p 访问端口ip:项目中设置的端口ip vue-cms-nestjs(docker镜像名称)
3.如果修改以上两种方法都不行,试试修改typeorm配置文件
//mysql配置
export const handleMyConfig = ()=>{
let mysqlConfig:any = {
type: 'mysql',//数据库类型
host: '连接数据库得ip',//ip
port: 3306,//端口号
username: 'root',//账号
password: '你的mysql密码',//密码
database: '你的数据库名',//数据库名
synchronize: true,//是否自动将实体类同步到数据库
retryDelay:500,//重试连接数据库间隙
retryAttempts:10,//重试连接数据库的次数
// entities: [__dirname+"/**/*.entity{.ts,.js}"],//实体文件
autoLoadEntities:true,//如果为true,将自动加载实体 forFeature()方法注册的每个实体都将自动添加到配置对象的实体
cache:false,//要启用缓存
logging:true,//开启日志
extra: {timezone: 'Asia/Shanghai'} // 设置时区为中国
}
return mysqlConfig;
}
import { TypeOrmModule } from '@nestjs/typeorm';
...
let mysql = TypeOrmModule.forRoot(handleMyConfig());
...
✨ 踩坑不易,还希望各位大佬支持一下 \textcolor{gray}{踩坑不易,还希望各位大佬支持一下} 踩坑不易,还希望各位大佬支持一下
📃 个人主页: \textcolor{green}{个人主页:} 个人主页: 沉默小管
📃 个人网站: \textcolor{green}{个人网站:} 个人网站: 沉默小管
📃 个人导航网站: \textcolor{green}{个人导航网站:} 个人导航网站: 沉默小管导航网
📃 我的开源项目: \textcolor{green}{我的开源项目:} 我的开源项目: vueCms.cn
🔥 技术交流 Q Q 群: 837051545 \textcolor{green}{技术交流QQ群:837051545} 技术交流QQ群:837051545
👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!
如果有不懂可以留言,我看到了应该会回复
如有错误,请多多指教