Можно ли создавать образы ARM32 docker на gitlab ci? - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь настроить автоматизацию c сборки и развертывания на Raspberry PI с использованием Gitlab CI и контейнера реестра. Вот мой Dockerfile (это. net основное приложение):

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

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

WORKDIR /src
COPY ["ConsoleApp/ConsoleApp.csproj", "ConsoleApp/"]
RUN dotnet restore "ConsoleApp/ConsoleApp.csproj"
COPY . .
WORKDIR "/src/ConsoleApp"
RUN dotnet build "ConsoleApp.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "ConsoleApp.csproj" -c Release -o /app/publish

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

.gitlab-ci.yml

image: docker:19.03.1
services:
  - docker:19.03.1-dind

stages:
  - build
  - test
  - release
  - deploy

variables:
  DOCKER_HOST: tcp://docker:2376
  DOCKER_TLS_CERTDIR: "/certs"
  CONTAINER_CONSOLEAPP_ARM32: $CI_REGISTRY_IMAGE:consoleapparm32

before_script:
  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY

build_consoleapp_arm32:
  stage: build
  script:
    - docker build -f ./ConsoleApp/DockerfileARM -t $CONTAINER_CONSOLEAPP_ARM32 .
    - docker push $CONTAINER_CONSOLEAPP_ARM32

Сборка этого Dockerfile работает отлично, если я запускаю его непосредственно на Малина. Если я пытаюсь создать точно такой же файл, используя точно такую ​​же команду на Gitlab CI, я получаю некоторые странные ошибки, такие как:

standard_init_ linux. go: 211: exe c user процесс вызвал "нет такого файла или каталога"

Может ли быть проблема с несовместимой архитектурой? Есть ли обходные пути для этого?

...