我通过在ubuntu上的docker容器中运行找不到配置文件'appsettings.json'

时间:2016-10-03 22:48:45

标签: asp.net-core .net-core

当我查看我的发布文件时,在服务器上的文件appsettings.json就在那里,并且它们在发布中进行配置。

当我在启动时执行env.ContentRootPath的Console.WriteLine时,contentRootPath为/.

它应该是安装应用程序的文件夹的路径吗?

public Startup(IHostingEnvironment env)
        {
        Console.WriteLine(" ContentRootPath: " + env.ContentRootPath);

        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: false, reloadOnChange: true);

1 个答案:

答案 0 :(得分:0)

我发现问题与我的docker文件以及我复制程序的位置有关。

我正在容器中以root身份复制程序目录,我怀疑运行kestrel的用户无法访问该根文件夹而无法查看文件。

FROM microsoft / dotnet:latest     COPY / app / root /    EXPOSE 5001 / tcp    ENTRYPOINT dotnet /root/App.dll

我使用的是另一个脚本文件脚本,它只是复制文件夹和我的AppSettings文件,找到并正确加载。

FROM microsoft / dotnet:latest     WORKDIR / app    ENV ASPNETCORE_URLS http:// *:5001    EXPOSE 5001    ENTRYPOINT [“dotnet”,“App.dll”]     COPY。 /应用

Github with a similar issue