Azure iot edge: решение не строится, а pu sh для платформы arm32v7 в VSCode - PullRequest
0 голосов
/ 17 июня 2020

Я создал готовое решение c# edge в VScode, используя инструменты IoT, но получаю следующую ошибку при попытке сборки и sh решение:

Step 4/12 : RUN dotnet restore
---> Running in 22c6f8ceb80c
A fatal error occurred, the folder [/usr/share/dotnet/host/fxr] does not contain any version-numbered child folders
The command '/bin/sh -c dotnet restore' returned a non-zero code: 131

Это явно происходит, когда он пытается выполнить команды в Dockerfile.arm32v7, в которых есть следующее:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster-arm32v7 AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim-arm32v7
WORKDIR /app
COPY --from=build-env /app/out ./

RUN useradd -ms /bin/bash moduleuser
USER moduleuser

ENTRYPOINT ["dotnet", "SampleModule.dll"]

Это происходит только при сборке для arm32v7, но работает для amd64. Я строю для использования на Raspberry Pi, поэтому мне нужен arm32.

Мне кажется, что проблема в моей среде, но я не знаю, где искать? Я также видел некоторые комментарии, которые вам нужно создать на хост-машине ARM, если вы хотите, чтобы он работал, но я не видел этого в документации раньше и не имеет смысла с точки зрения простоты разработки

1 Ответ

0 голосов
/ 18 июня 2020

При отправке сборки с использованием az acr build вы можете передать параметр --platform linux/arm/v7, который должен дать вам среду сборки ARM.

Если вы предпочитаете собирать локально, вы можете попробовать использовать втягивание пакета qemu в контекст сборки на первом этапе вашего Dockerfile.

...