.NET 8 for Dockerの特殊ディレクトリのパス

2024年9月20日 (金) 05:09時点におけるAdministrator (トーク | 投稿記録)による版

ベースイメージ

FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base
WORKDIR /app

.NET 6や.NET 7は試していません。

結果

SpecialFolder .NET for Linux
Desktop
Programs
MyDocuments
MyDocuments
Favorites
Startup
Recent
SendTo
StartMenu
MyMusic
MyVideos
DesktopDirectory
MyComputer
NetworkShortcuts
Fonts
Templates
CommonStartMenu
CommonPrograms
CommonStartup
CommonDesktopDirectory
ApplicationData
PrinterShortcuts
LocalApplicationData
InternetCache
Cookies
History
CommonApplicationData /usr/share
Windows
System
ProgramFiles
MyPictures
UserProfile /root
SystemX86
ProgramFilesX86
CommonProgramFiles
CommonProgramFilesX86
CommonTemplates
CommonDocuments
CommonAdminTools
AdminTools
CommonMusic
CommonPictures
CommonVideos
Resources
LocalizedResources
CommonOemLinks
CDBurning

解説

docker版ではCommonApplicationDataとUserProfileしか返ってきません。

  • dockerイメージ上にファイルは保存するな
  • docker-composeでボリュームを明示してそこに保存しろ

ということでしょう。

コード

foreach (var folder in Enum.GetValues(typeof(Environment.SpecialFolder)))
{
    var path = Environment.GetFolderPath((Environment.SpecialFolder)folder);
    Console.WriteLine($"{folder} => {path}");
}