Я разрабатываю приложение Asp.Net Core (с React-интерфейсом) для моего Raspberry Pi 3 Model B +. Приложение, основанное на шаблоне (dotnet new реагировать -o реагировать-приложение).
Я хочу разрабатывать и отлаживать приложение локально на моем ноутбуке с ОС Windows, затем создавать приложение для архитектуры ARM32, помещать образ в концентратор докеров и извлекать и запускать образ на устройстве Raspberry.
Я обнаружил, что если я собираю приложение с использованием microsoft / dotnet: 2.2-sdk и microsoft / dotnet: 2.2-aspnetcore-runtime на моем ноутбуке с Windows, то я не могу запустить этот образ на устройстве Raspberry с сообщением об ошибке: ' standard_init_linux.go: 190: пользовательский процесс exec вызвал «ошибку формата exec». Похоже, что созданный Windows образ подходит только для архитектуры AMD64.
Затем я попытался изменить образы компоновщика и среды выполнения на ARM32, но теперь процесс сборки завершается с ошибкой:
qemu: Unsupported syscall: 389
qemu: Unsupported syscall: 345 qemu:
uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault The command '/bin/sh -c dotnet restore' returned a
non-zero code: 139
Мой файл Docker:
#FROM microsoft/dotnet:2.2-sdk AS builder
FROM microsoft/dotnet:2.2-sdk-stretch-arm32v7 AS builder
WORKDIR /source
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get install -y nodejs
COPY *.csproj .
RUN dotnet restore
COPY ./ ./
RUN dotnet publish "./react-app.csproj" --output "./dist" --configuration Release --no-restore
#FROM microsoft/dotnet:2.2-aspnetcore-runtime
FROM microsoft/dotnet:2.2-aspnetcore-runtime-stretch-slim-arm32v7 as runtime
WORKDIR /app
COPY --from=builder /source/dist .
EXPOSE 80
ENTRYPOINT ["dotnet", "react-app.dll"]
Можно ли создать образ для устройства Raspberry из ОС Windows?
Если да, не могли бы вы помочь мне с настройками Docker?