net core应用在linux中差异记录
window平台和linux平台部署应用,运行表现可能会存在差异,遇到就随手记录下,欢迎补充:
序号 | 差异 | 解决 |
---|---|---|
1 | 发布镜像存在时区问题 | 使用release模式发布,并设置时区 |
2 | 应用场景批量插入数据到mysql,存在一个序列化数据问题,发现存入到mysql中时间字段变成了0000-00-00 00:00:00,但windows上应用插入到mysql的时间是正常的 | 序列化字符串时,需要将日期转换一下。ToString("yyyy-MM-dd HH:mm:ss") |
3 | linux和windows换行存在差异: | 需要手动判断一下,以区分RuntimeInformation.IsOSPlatform(OSPlatform.Linux):: linux(\n)、windows(\r\n)、macos(\r) |
4 | 相同宿主机下,不同镜像如何相互访问。eg:同一个宿主机,A应用镜像需要访问b数据库镜像 | 两种方式:1.两个镜像使用bridge方式连接,或者在docker compose文件中定义桥接,然后一起发布镜像;2.由于不方便重新发布mysql镜像或容器,可以使用--link方式。 docker run -di --name=containA --link containBmysql:mysql5737 imageA ;imageA为镜像id或名、containA为要创建容器名称、containBmysql为需要--link的容器名称、因为是mysql数据库,推荐使用别名,连接mysql使用,此处为mysql5737。特别注意:link方式后,二者是同一个网段,故可以相互访问,mysql的端口,需要更改为mysql的端口,而非mysql映射到宿主机暴露的端口。 |