第一次构建初始化项目自带的dockerfile,内容如下:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
#FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
#WORKDIR /app
#EXPOSE 80
#EXPOSE 443
#
#FROM mcr.microsoft.com/dotnet/sdk:5.0-buster AS build
#WORKDIR /src
#COPY ["WaterCloud.Web/WaterCloud.Web.csproj", "WaterCloud.Web/"]
#RUN dotnet restore "WaterCloud.Web/WaterCloud.Web.csproj"
#COPY . .
#WORKDIR "/src/WaterCloud.Web"
#RUN dotnet build "WaterCloud.Web.csproj" -c Release -o /app/build
#
#FROM build AS publish
#RUN dotnet publish "WaterCloud.Web.csproj" -c Release -o /app/publish
#
#FROM base AS final
#WORKDIR /app
#COPY --from=publish /app/publish .
#RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#RUN echo 'Asia/Shanghai' >/etc/timezone
#ENTRYPOINT ["dotnet", "WaterCloud.Web.dll"]
在根目录按住shift同时右键打开powershell或者直接打开cmd命令面板,执行如下构建命令:
docker build -t yzzxWeb -f ./WaterCloud.Web/Dockerfile .
报错:
=> ERROR [internal] load metadata for mcr.microsoft.com/dotnet/core/sdk:5.0-buster 0.2s
=> ERROR [internal] load metadata for mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim 0.2s
=> CANCELED [build 1/7] FROM mcr.microsoft.com/dotnet/core/sdk:5.0-buster 0.0s
=> => resolve mcr.microsoft.com/dotnet/core/sdk:5.0-buster 0.0s
=> [internal] load build context 0.0s
=> ERROR [base 1/2] FROM mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim 0.0s
=> => resolve mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim
这是由于在 docker 集线器上也提到了更多信息:
作为 .NET 5.0 版本的一部分,所有 .NET Docker 映像(包括 .NET Core 2.1 和 3.1)都已转换为下面描述的一组新的 Docker 存储库。将继续对旧存储库位置中支持的标记进行更新,以实现向后兼容性。请更新对这些新名称的任何存储库引用。有关详细信息,请参阅 .NET 5.0 存储库重命名公告。
解决方式:
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
以上代码改成如下:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
即去掉-buster-slim代码