【发布时间】:2019-12-13 00:32:34
【问题描述】:
设置
在我的解决方案文件夹中,我有这个文件/文件夹结构
来源
docker-compose.yml
.dockerignore
路径.json
网络项目
//所有web-project文件(包括DockerFile)
另一个网络项目
//所有web-project文件(包括DockerFile)
在我的 Visual Studio 项目中,我将 paths.json 添加为 linked 文件并将其包含在我的图像中,我设置了我的 csproj 文件(不知道这是否是必须的……)
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
<DockerDefaultTargetOS>Windows</DockerDefaultTargetOS>
<UserSecretsId>8bcf6be2-9d06-4667-89f6-38f25af5dfbc</UserSecretsId>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
</PropertyGroup>
<ItemGroup>
<Content Include="..\paths.json" Link="paths.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
</Content>
</ItemGroup>
...
</Project>
还有我的 Dockerfile 到:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-nanoserver-1803 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-nanoserver-1803 AS base
WORKDIR /src
COPY ["Webproject/Webproject.csproj", "Webproject/"]
COPY "paths.json" "paths.json"
RUN dotnet restore "Webproject/Webproject.csproj"
COPY . .
WORKDIR "/src/Webproject"
RUN dotnet build "Webproject.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "Webproject.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Webproject.dll"]
要在我的应用程序中使用该文件,我使用:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
var environment = context.HostingEnvironment;
var folder = Path.Combine(environment.ContentRootPath);
config.AddJsonFile(Path.Combine(folder, "paths.json"), false);
})
.UseStartup<Startup>();
我什至试图在我的 .dockerignore 文件中排除它:
!paths.json
仅供参考...我也在使用 docker-compose 项目
错误
启动应用程序时出现此错误:
System.IO.FileNotFoundException:'未找到配置文件'paths.json',不是可选的。物理路径是'C:\app\paths.json'。'
问题
我在 Dockerfile 中尝试了很多不同的路径来包含它,但它似乎不起作用。谁能帮我设置正确的路径?
另外,我搜索了是否可以列出所有文件(以检查它是否复制到正确的路径),但似乎不可能?
【问题讨论】:
-
如果需要更多信息,请告诉我!我会尽快提供的
-
你的 dockerfile 在哪里?
-
它在 Webproject 文件夹中
-
检查我的答案。
标签: docker asp.net-core config visual-studio-2019