Развертывание ASP. NET Core Docker образа от x86 до ARM (Raspberry Pi) в VS2019 - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть Docker настройка на Raspberry Pi 4, и я хочу развернуть приложение ASP. NET Core 3.1 (пример приложения Razor pages mov ie) на моем Pi через Docker Hub. Когда я извлекаю образ из Docker концентратора и пытаюсь запустить его, я получаю ошибку

standard_init_linux.go:211: exec user process caused "exec format error

Я построил Docker образ на Windows 10 x64 P C. При проверке изображения Docker на моем Пи я вижу, что архитектура неверна

"Architecture": "amd64",

Должна быть возможность создания Docker ARM для целевого изображения на компьютере x64 с момента последнего год , но каким-то образом мое изображение построено для x64. Я изменил свой Dockerfile на целевой linux -arm


FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["RazorMovies/RazorMovies.csproj", "RazorMovies/"]
RUN dotnet restore "RazorMovies/RazorMovies.csproj" -r linux-arm
COPY . .
WORKDIR "/src/RazorMovies"
RUN dotnet build "RazorMovies.csproj" -c Release -o /app/build -r linux-arm

FROM build AS publish
RUN dotnet publish "RazorMovies.csproj" -c Release -o /app/publish -r linux-arm

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

, и я изменил целевой параметр времени выполнения, найденный в Build -> Publi sh в VS2019, на целевой linux -arm а также как показано на рисунке ниже.

Docker Puslish settings in VS 2019

Я знаю, что мой Pi способен запускать ASP. NET Основные приложения через Docker, я запустил то же самое приложение через Docker, используя пример, найденный здесь . На этом изображении показана архитектура в виде arm вместо amd64.

docker run --rm -it -p 8000:80 mcr.microsoft.com/dotnet/core/samples:aspnetapp

Чего мне не хватает для создания моего изображения с ориентацией на ARM вместо x64?

1 Ответ

2 голосов
/ 11 февраля 2020

Нашел решение, мне тоже нужно было поменять базу с

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base

на

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim-arm32v7 AS base
...