【问题标题】:how to get docker to include wwwroot static content aspnet core如何让 docker 包含 wwwroot 静态内容 aspnet 核心
【发布时间】:2019-05-30 16:38:45
【问题描述】:

我正在尝试将 swagger.json 文件包含到我的 docker 映像中。 我正在使用 aspnet 核心 2.2 当我在本地运行我的应用程序时,它会获取位于 wwwroot 中的 swagger.json 文件。 当我创建我的 docker 映像并运行它时,swagger 启动但找不到 .json 所以它只是出错了。我对码头工人很陌生。 我应该注意到它也没有找到我放入 wwwroot 的 test.gif 文件。 我在 docker 文件中遗漏了什么吗? 我绝对想在我的图像中包含 .json 文件。

码头文件:

        FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443

    FROM microsoft/dotnet:2.2-sdk AS build
    WORKDIR /src
    COPY ["myApp.Api/myApp.Api.csproj", "myApp.Api/"]
    COPY ["myApp.logic/myApp.logic.csproj", "myApp.logic/"]
    COPY ["myApp.Models/myApp.Models.csproj", "myApp.Models/"]
    RUN dotnet restore "myApp.Api/myApp.Api.csproj"
    COPY . .
    WORKDIR "/src/myApp.Api"
    RUN dotnet build "myApp.Api.csproj" -c Release -o /app

    FROM build AS publish
    RUN dotnet publish "myApp.Api.csproj" -c Release -o /app

    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app .
    ENTRYPOINT ["dotnet", "myApp.Api.dll"]

csproj 文件:

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <UserSecretsId></UserSecretsId>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DocumentationFile></DocumentationFile>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.0.2105168" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\myApp.logic\myApp.logic.csproj" />
  </ItemGroup>

  <ItemGroup>
    <Content Update="wwwroot\swagger.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

</Project>

泊坞窗命令

docker run -it -p 5001:80 myapp:latest

【问题讨论】:

  • 您找到解决方案了吗?我在 ASP.NET Core 2.1 上遇到了同样的问题,但只有 Docker 镜像。 Windows 10 按预期包含wwwroot 文件夹,无需任何修改。但是在docker上它不起作用。尝试了不同的包含指令,例如&lt;Folder Include="wwwroot/" /&gt;&lt;Content Include="wwwroot/" /&gt; 和其他没有成功的人。 wwwroot 文件夹存在于 Docker 镜像中,但发布后它在发布目标目录中丢失。

标签: docker asp.net-web-api asp.net-core


【解决方案1】:

就我而言,解决方案是将子文件夹和文件重命名为小写,因为 Docker 映像的路径区分大小写。

【讨论】:

    猜你喜欢
    • 2022-10-06
    • 1970-01-01
    • 2022-01-23
    • 2016-08-22
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多