如何在包含 ASP.NET Core Web App 的 Visual Studio 2022 中构建 armv71 (ARM32) docker 容器?

问题描述 投票:0回答:0

我正在使用 Visual Studio 2022 在 Windows 10 上工作,并尝试创建一个简单的 ASP.NET Core Web 应用程序 (.net 7.0) 并将其放入 docker 映像中。 此 docker 映像应部署到 armv71 (ARM32) 设备上(通过 tar 存档)。 启动“Build Docker Image”时失败并出现以下错误:

...
error CTC1014: #12 [build 4/7] RUN dotnet restore "MyPlcDockerWebApp/MyPlcDockerWebApp.csproj"
 : error CTC1014: #12 sha256:353b0e08e28a4e967ad5c810f36eb6453202088e54405c3c2fb3cb70be70d3bf
 : error CTC1014: #12 9.885 Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
 : error CTC1014: #12 9.888    at Regex1_Scan(RegexRunner, ReadOnlySpan`1)
 : error CTC1014: #12 9.888    at System.Text.RegularExpressions.Regex.RunAllMatchesWithCallback[TState](String inputString, ReadOnlySpan`1 inputSpan, Int32 startat, TState& state, MatchCallback`1 callback, RegexRunnerMode mode, Boolean reuseMatchObject)
 : error CTC1014: #12 9.893 qemu: uncaught target signal 6 (Aborted) - core dumped
 : error CTC1014: #12 9.921 Aborted
 : error CTC1014: #12 ERROR: executor failed running [/bin/sh -c dotnet restore "MyPlcDockerWebApp/MyPlcDockerWebApp.csproj"]: exit code: 134
 : error CTC1014: ------
 : error CTC1014:  > [build 4/7] RUN dotnet restore "MyPlcDockerWebApp/MyPlcDockerWebApp.csproj":
 : error CTC1014: ------
 : error CTC1014: executor failed running [/bin/sh -c dotnet restore "MyPlcDockerWebApp/MyPlcDockerWebApp.csproj"]: exit code: 134

有时我得到这个

error CTC1014: #12 [build 4/7] RUN dotnet restore "MyPlcDockerWebApp/MyPlcDockerWebApp.csproj"
 : error CTC1014: #12 sha256:7b86b8130fe749ac2390d652e6070685f81fc5ba8e51ca7d8fdf198580978932
 : error CTC1014: #12 5.024 qemu: uncaught target signal 11 (Segmentation fault) - core dumped
 : error CTC1014: #12 5.044 Segmentation fault
 : error CTC1014: #12 ERROR: executor failed running [/bin/sh -c dotnet restore "MyPlcDockerWebApp/MyPlcDockerWebApp.csproj"]: exit code: 139
 : error CTC1014: ------

我的 Dockerfile 是:

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:7.0.4-jammy-arm32v7 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:7.0.202-jammy-arm32v7 AS build
WORKDIR /src
COPY ["MyPlcDockerWebApp/MyPlcDockerWebApp.csproj", "MyPlcDockerWebApp/"]
RUN dotnet restore "MyPlcDockerWebApp/MyPlcDockerWebApp.csproj"
COPY . .
WORKDIR "/src/MyPlcDockerWebApp"
RUN dotnet build "MyPlcDockerWebApp.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyPlcDockerWebApp.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyPlcDockerWebApp.dll"]

我做错了什么? 我已经尝试过不同的手臂基础图像,但没有帮助。

在我的 Windows 机器上,当我使用时它工作正常(docker 容器得到构建和启动) mcr.microsoft.com/dotnet/aspnet:7.0 作为基本图像和 mcr.microsoft.com/dotnet/sdk:7.0 作为构建

docker asp.net-core arm armv7 .net-7.0
© www.soinside.com 2019 - 2024. All rights reserved.