在 Docker (ASP.NET Core) 中更改时区

Posted

技术标签:

【中文标题】在 Docker (ASP.NET Core) 中更改时区【英文标题】:Change TimeZone in Docker (ASP.NET Core) 【发布时间】:2021-11-15 13:35:55 【问题描述】:

我是 docker 新手,希望将 TZ=Australia/NSW 设置为 official dotnet core docker image

我尝试在第 5 行添加到 ENV TZ=Australia/NSW,但没有成功。

请帮忙。

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
ENV TZ=Australia/NSW
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build


WORKDIR /src
COPY ["Application.WebAPI/Application.WebAPI.csproj", "Application.WebAPI/"]
RUN dotnet restore "Application.WebAPI/Application.WebAPI.csproj"
COPY . .
WORKDIR "/src/Application.WebAPI"
RUN dotnet build "Application.WebAPI.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Application.WebAPI.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Application.WebAPI.dll"]

【问题讨论】:

您的哪些症状表明它不起作用?对docker run --rm -e TZ=Australia/NSW mcr.microsoft.com/dotnet/aspnet:5.0 date 的快速测试表明它应该可以工作。 嗨@HansKilian 有一个错误说,"Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container...." 这只是一个警告,不是吗?请参阅***.com/questions/61452280/… 了解说明 【参考方案1】:

aspnet 映像的操作系统版本是 Debian GNU/Linux 10

我在 docker 容器中运行了两个命令

ln -sf /usr/share/zoneinfo/posix/Australia/NSW /etc/localtime
date

得到以下输出:

您可以将其添加到您的 Dockerfile 作为 Docker 构建指令的一部分

Run ln -sf /usr/share/zoneinfo/posix/Australia/NSW /etc/localtime

【讨论】:

以上是关于在 Docker (ASP.NET Core) 中更改时区的主要内容,如果未能解决你的问题,请参考以下文章

docker部署asp.net core

Docker打包 Asp.Net Core应用,在CentOS上运行

ASP.NET Core docker 构建错误

在windows上安装ASP.NET Core 的 Docker 映像

如何使用 Visual Studio 2019 在 Docker 容器中运行 ASP.NET Core 3.1 项目?

Asp.Net Core WebAPI+PostgreSQL部署在Docker中