2025/01/26

[ASP.NET Core] 如何在 ASP.NET Core 專案中的 Dockerfile 設定預設時區

markdown ### 問題 在開發 ASP.NET Core 專案時,Docker Image 預設的時區是 UTC,可以把時區預設定在 Asia/Taipei 嗎? ### 環境 - Windows 11 - Visual Studio 2022 (v17.12.4) - ASP.NET Core (.NET 8) ### 解決方法 在 Dockerfile 的 base 上加一段 `ENV TZ=Asia/Taipei` (有試過加在 final 上,但是在 Visual Studio 開發時並不會正確載入,發佈到 Azure Web App for Containers 確認是有正確載入時區的) 而且 Image 要選 `dotnet/aspnet:8.0` 不要選 `dotnet/aspnet:8.0-jammy-chiseled` (不能因為佔空間才選它,它是不包含 tzdata 套件的) ``` FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base USER app WORKDIR /app ENV TZ=Asia/Taipei # 加 TZ 這一個變數 EXPOSE 8080 EXPOSE 8081 ... ``` 若是不想要變更 Dockerfile 的設定,在 Visual Studio 開發,可以修改 `launchSettings.json` 檔案 在 Dockerfile 的 environmentVariables 加上 `TZ` 的參數 執行 docker run 的命令會帶入 TZ 的環境變數值 ### 在 Azure App Service 如何設定時區 App Service: 設定 / 環境變數 / 應用程式設定 Windows OS - 名稱: `WEBSITE_TIME_ZONE` - 值: `Taipei Standard Time` Linux OS - 名稱: `TZ` - 值: `Asiz/Taipei` ### 參考連結 - Windows - Default Time Zones - How to Change TimeZone in Azure App Service

沒有留言: