我已经在Visual studio 2022中创建了.net核心web api,并启用了docker,所选操作系统为Windows。在使用Docker构建代码之后,我得到了"您的Docker服务器主机配置为"Linux",但您的项目目标是"Windows">
下面是我的docker文件。
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["ApacheKafka.Producer/ApacheKafka.Producer.csproj", "ApacheKafka.Producer/"]
RUN dotnet restore "ApacheKafka.Producer/ApacheKafka.Producer.csproj"
COPY . .
WORKDIR "/src/ApacheKafka.Producer"
RUN dotnet build "ApacheKafka.Producer.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ApacheKafka.Producer.csproj" -c Release -o /app/publish
/p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ApacheKafka.Producer.dll"]
In Container.将其指向Windows操作系统
<DockerDefaultTargetOS Condition="'$(DockerDefaultTargetOS)' ==
''">Windows</DockerDefaultTargetOS>
在Container.targets
中,您将容器类型定位为Windows:
<DockerDefaultTargetOS Condition="'$(DockerDefaultTargetOS)' ==
''">Windows</DockerDefaultTargetOS>
然而,您的Docker实例可能被配置为托管Linux容器。您应该执行以下操作之一:
- 将
<DockerDefaultTargetOS>
更改为Linux(确保容器正确运行( - 将Docker实例配置到Windows
使用Docker Desktop将Docker容器类型更改为Windows
以下是Docker文档的链接,概述了如何使用Docker Desktop配置Docker:https://docs.docker.com/desktop/settings/windows/
切换容器类型的一种简单方法是:
- 右键单击系统托盘中的Docker图标
- 单击
Switch to Windows Containers...
按钮
相关链接
如何更改对.Net Core Web应用程序项目的Docker操作系统支持?