Datetime.Now 在docker中不正确 的解决方式

Datetime.Now 在docker中不正确 的解决方式

在dotnet5及以前的版本中都没有出现

现象

dotnet 6版本运行在docker中,Datetime.Now中显示不正确 (东八区少了8小时)。

-v /etc/localtime:/etc/localtime 不再起作用。

解决方式

1. 指定 TZ

在dockerfile中指定localtime

FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
#省略#
FROM base AS final
WORKDIR /app
# 这里声明变量TZ
ENV TZ=Asia/Shanghai
# 指定localtime
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "xxx.dll"]

声明变量TZ:默认Asia/Shanghai, 如果要指定其他时区,可以在 docker run 时 指定 -e TZ=……
或者不声明变量TZ, docker run -e /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime

不清楚时区的可以查看 ls /usr/share/zoneinfo

posted @ 2022-08-03 18:35  jzblive  阅读(251)  评论(0编辑  收藏  举报