我是ASP.NET Core和docker的新手。我创建了一个简单的ASP.NET Core 2.0应用程序,并尝试在Windows上使用docker。但是,我收到此错误:
Your Docker server host is configured for 'Linux', however the docker-compose project targets 'Windows'.
虽然它似乎是非常有用的错误,但我无法找到“为Windows配置主机”的位置
基本上,Celestin Bochis和Pavel Agarkov的答案都很棒。但是至少自.net core 2.2以来,docker的os存储在.csproj文件中。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
...
</PropertyGroup>
...
</Project>
并且不要忘记修改您的docker文件。图像应该是正确的。对于.net core 2.2即:
Linux:
Microsoft/dotnet:2.2-aspnetcore-runtime AS base
microsoft/dotnet:2.2-sdk AS build
Windows:
microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803
microsoft/dotnet:2.2-sdk-nanoserver-1803
当我创建项目以定位Windows并且之后想要将其切换到Linux目标时,我收到此错误。如果您想使用Linux容器,则需要更多一些步骤:
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY WebApplication7/WebApplication.csproj WebApplication/
RUN dotnet restore WebApplication/WebApplication.csproj
COPY . .
WORKDIR /src/WebApplication
RUN dotnet build WebApplication.csproj -c Release -o /app
如果docker在windows机器上运行,那么你需要在.dcproj文件中更改“DockerTargetOS”的值应为“Windows”。
从visual studio卸载docker项目并编辑项目并将值“Windows”设置为“DockerTargetOS”。
<DockerTargetOS>Windows</DockerTargetOS>