ASP.NET Core MVC 部屬在 Docker 中每次都要重新登入 解決方式

在 Docker 中執行 ASP.NET Core 程式時可能會出現下面的警告訊息:
    
warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]
  Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. 
  Protected data will be unavailable when container is destroyed.
    

原因是 ASP.NET Core MVC 在執行時會在 /root/.aspnet/DataProtection-Keys 中建立金鑰,若此金鑰變更,則需要重新登入。

想要將此金鑰保留,可以在執行 docker 時將金鑰儲存的路徑映射到主機中,例如放到家目錄的 my_project/DataProtection-Keys 路徑下:
    
docker run -v ~/my_project/DataProtection-Keys:/root/.aspnet/DataProtection-Keys my_docker_image_name
    



參考資料:
Persisting keys when hosting in a Docker container

留言