.NET Framework 4.8通过Docker部署至Kubernetes(AWS EKS)失败求助
问题解决:Docker构建平台不匹配错误
问题根源
你使用的mcr.microsoft.com/dotnet/framework/sdk系列镜像仅支持Windows容器,而GitLab构建环境(Runner)或AWS EKS集群默认使用Linux环境,导致拉取镜像时出现平台不匹配报错。另外你的项目是.NET Core类型(从ENTRYPOINT ["dotnet", "WebSite2.dll"]可判断),却错误选用了.NET Framework专属的SDK镜像,这也是核心矛盾点。
解决方案
1. 修正Dockerfile中的镜像选择
将构建阶段的.NET Framework SDK替换为对应版本的.NET Core SDK镜像,同时修正解决方案文件名的错误(WebSite2..sln多了一个点):
# 选择对应版本的.NET Core ASP.NET镜像(比如.NET Core 3.1,根据你的项目实际版本调整) FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base ARG BUILD_ENV ENV ASPNETCORE_ENVIRONMENT=$BUILD_ENV WORKDIR /app # 使用同版本的.NET Core SDK镜像进行构建 FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build WORKDIR /src COPY . /src # 修正解决方案文件名的多余点 RUN dotnet build "WebSite2.sln" -o /app/build FROM build AS publish RUN dotnet publish "WebSite2.sln" -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "WebSite2.dll"] EXPOSE 80
2. 确认构建环境平台一致性
- 确保GitLab Runner使用Linux环境(默认配置即可),避免使用Windows Runner(除非你特意部署Windows容器到EKS的Windows节点)。
- AWS EKS若要部署Windows容器,需要额外配置Windows节点组,但.NET Core项目推荐使用Linux容器,更轻量且兼容性更好。
内容的提问来源于stack exchange,提问作者sreddy
相关产品推荐
相关产品推荐

