我最近开始学习 docker
,但在托管使用 Visual Studio Code< 创建的简单
在 asp.net core Web api
样板应用程序时遇到问题docker
Windows 容器内。
我已在项目中设置了 Docker Fie
并运行 docker build --tag helloapi 。
但是当我运行docker run -p 9000:80 helloapi
时,我收到以下错误:
It was not possible to find any compatible framework version The specified framework 'Microsoft.AspNetCore.App', version '2.1.1' was not found. - Check application dependencies and target a framework version installed at: \ - Alternatively, install the framework version '2.1.1'.
我尝试了不同的 ASP.NET Core docker 镜像 this this和 this .
dotnet 核心版本:
dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 2.1.402
.NET Core SDKs installed:
2.1.402
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.4
Microsoft.AspNetCore.App 2.1.4
Microsoft.NETCore.App 2.1.4
helloapi.csproj 文件
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
Docker 文件:
FROM microsoft/aspnetcore
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-/publish} .
ENTRYPOINT ["dotnet", "HelloApi.dll"]
注意:我无法切换到 Linux 容器
,因为 docker 显示一些运行时错误,所以我使用 Windows 容器
并且 Turn windows 功能中未启用 IIS Server
。
我无法弄清楚我做错了什么?
任何人都可以指导我在 Windows 容器中使用 docker
托管 api
的正确方法吗?
任何帮助都会很棒。
最佳答案
看起来生成的 dockerfile 表单没有引用 dotnet:2.1-aspnetcore-runtime
和 dotnet:2.1-sdk
。
尝试以下步骤
将以下 Dockerfile 添加到您的解决方案文件夹
FROM microsoft/dotnet:2.1-sdk AS build-env
WORKDIR /build
COPY . /build
#Restore
RUN dotnet restore ./HelloApi.sln
RUN dotnet publish ./HelloApi/ -o /publish --configuration Release
# Build runtime image
FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /publish/ .
ENTRYPOINT ["dotnet", "WebApp.dll"]
构建它
docker build -t app1 。
运行
docker run -p 8080:80 --name appcontainer1 app1
测试一下
关于docker - 如何在 docker 容器内托管 asp.net core web api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52960906/