Docker中用于.NET Core应用程序的appSettings.json?

我在Docker容器中运行.net核心应用程序。 这是我的docker文件(只是为了build立一个开发环境):

FROM microsoft/dotnet:1.0.1-sdk-projectjson ENV ASPNET_ENV Development COPY bin/Debug/netcoreapp1.0/publish/ /root/ EXPOSE 5000/tcp ENTRYPOINT dotnet /root/AVP.WebApi.dll 

我在/ publish /文件夹中有一个appSettings.Development.json文件。 如果我构build并运行这个Docker文件,我最终会遇到一个奇怪的问题,.NET应用程序无法find它需要启动的appsettings(它们在appSettings.Development.json文件中)。

我已经确认,从Windows命令行如果我运行dotnet发布/ AVP.WebAPI.dll该应用程序抛出相同的例外,缺lessconfiguration设置。 但是,如果我cd /发布和运行dotnet AVP.WebAPI.dll应用程序启动和运行就好了。

任何想法如何更改我的docker文件,所以它会正确运行与appSettings.Development.json值的应用程序? (我也试图运行应用程序与所有值复制到常规appSettings.json文件没有运气)

我也尝试运行一个COPY命令来/而不是/ root和做dotnet AVP.WebApi.dll作为入口点,但是这导致项目无法find依赖关系。

尝试replace这一行:

 ENV ASPNET_ENV Development 

有了这个:

 ENV ASPNETCORE_ENVIRONMENT Development 

您的原始环境variables名称已在旧版.NET Core中使用,但已更改。 对于.NET Core来说,这可能是一个很痛苦的寻找教程等等,因为它从第一次开始就发生了所有的变化!

不要让我开始project.json文件!

更多信息:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments

作为大家的后续(我发布这是一个评论原来),这是最终修复它:

从我可以告诉它看起来像dotnet期望的appsettings文件是在同一个目录下运行。 所以我添加了COPY bin / Debug / netcoreapp1.0 / publish / appsettings.json /appsettings.json到dockerfile(这一行将appsettings文件复制到/ root /复制发布文件夹的目录下)。 一切都开始在这一点上工作。 看起来,dotnet可执行文件运行在/ root /下面的目录,所以之前找不到它,现在appsettings在同一个文件夹中,这都很开心。

有三个问题,我可以想到为什么它无法findappsettings:

  1. 它们不在容器中的正确文件夹中(是否复制了发布文件夹,并且发布文件夹是否包含appsettinsg?
  2. 您没有在StartupClass: appSetings.${Environment}.json定义使用appsettings的环境appSetings.${Environment}.json
  3. 它在本地工作,因为Windows文件系统不区分大小写,而且Linux区分大小写,因此找不到文件。 (检查你的大小写)。