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:
- 它们不在容器中的正确文件夹中(是否复制了发布文件夹,并且发布文件夹是否包含appsettinsg?
- 您没有在StartupClass:
appSetings.${Environment}.json
定义使用appsettings的环境appSetings.${Environment}.json
- 它在本地工作,因为Windows文件系统不区分大小写,而且Linux区分大小写,因此找不到文件。 (检查你的大小写)。
- 创build针对Linux Docker容器的长期运行的.NET Core服务
- 在Docker中运行.Net Core 2.0上的IdentityServer4 – 访问主机资源
- 授权使用docker时,不能使用identityserver4
- 使用适用于Docker的Visual Studio工具部署和debugging远程Linux Docker容器
- 在启动时可以初始化Consul Key Value存储吗?
- 由于缺lessdll:s,因此使用.NET Core 2.0构buildDocker多阶段失败
- 在NuGet中debugging.NET Core项目和.NET库
- RUN命令不能访问卷
- 在Docker中为自己的容器.Net Core应用程序指定运行时