作者:饥饿的饮水机 | 来源:互联网 | 2023-02-10 10:24
我在docker容器中运行.net核心应用程序.这是我的docker文件(仅用于构建开发环境):
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文件.如果我构建并运行这个Docker文件,我最终会遇到一个奇怪的问题,即.NET应用程序找不到它需要启动的appsettings(它们位于appSettings.Development.json文件中).
我已经确认,如果我运行dotnet publish/AVP.WebAPI.dll,从Windows命令行,该应用程序将丢失相同的例外,以便丢失配置设置.但是,如果我cd /发布并运行dotnet AVP.WebAPI.dll,应用程序启动并运行正常.
任何想法如何更改我的docker文件,以便它将使用appSettings.Development.json值正确运行应用程序?(我也尝试运行应用程序,将所有值复制到常规appSettings.json文件中,没有运气)
我也试过运行COPY命令到/而不是/ root并将dotnet AVP.WebApi.dll作为入口点,但这会导致项目无法找到依赖项.
1> Andrew S..:
尝试替换此行:
ENV ASPNET_ENV Development
有了这个:
ENV ASPNETCORE_ENVIRONMENT Development
您的原始环境变量名称在较旧的.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
2> Sam Ellis..:
作为每个人的后续行动(我最初发布的评论是这样),这是最终解决问题的方法:
据我所知,dotnet希望appsettings文件位于运行该文件的目录中。所以我将COPY bin / Debug / netcoreapp1.0 / publish / appsettings.json /appsettings.json添加到了dockerfile(这一行将appsettings文件复制到了/ root /下的目录中,我将发布文件夹复制到了该目录中)。此时一切开始正常。似乎dotnet可执行文件从/ root /下的目录运行,因此以前找不到它,现在appsettings位于同一文件夹中,这一切都很高兴。