Как кросс-компилировать образ go docker для Raspberry Pi Zero armhf с помощью buildx

У меня есть следующий Dockerfile, и я пытаюсь создать образ docker, который также работает на Raspberry Pi Zero. К сожалению, образ не работает на pi zero. Контейнер завершает работу с codeом ошибки 132.

Для сборки я вызываю:

Итак, у меня есть образ для armV6 и armV7. Но Raspberry Pi Zero — это armhf. Может кто-нибудь мне помочь?

############################
# STEP 1 build executable binary
############################
#FROM golang:alpine AS builder
FROM --platform=$BUILDPLATFORM golang:alpine AS builder
# Install git.
# Git is required for fetching the dependencies.
RUN apk update && apk add --no-cache git tzdata
WORKDIR $GOPATH/src/wimaha/teslaBleHttpProxy/
COPY . .
# Fetch dependencies.
# Using go get.
RUN go get -d -v
# Build the binary.
#RUN go build -o /go/bin/teslaBleHttpProxy
ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT
ARG TARGETPLATFORM

RUN printf '..%s..' "I'm building for TARGETPLATFORM=${TARGETPLATFORM}" \
    && printf '..%s..' ", TARGETARCH=${TARGETARCH}" \
    && printf '..%s..' ", TARGETVARIANT=${TARGETVARIANT} \n" \
    && printf '..%s..' "With uname -s : " && uname -s \
    && printf '..%s..' "and  uname -m : " && uname -m

RUN case "${TARGETVARIANT}" in \
    "armhf") export GOARM='6' ;; \
    "armv7") export GOARM='6' ;; \
    "v6") export GOARM='6' ;; \
    "v7") export GOARM='7' ;; \
    esac;

RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
    go build -ldflags="-w -s" -o /go/bin/teslaBleHttpProxy
#RUN GOOS=linux go build -ldflags="-w -s" -o /go/bin/teslaBleHttpProxy
#RUN sudo setcap 'cap_net_admin=eip' "/go/bin/teslaBleHttpProxy"
RUN mkdir -p /go/bin/key
############################
# STEP 2 build a small image
############################
FROM scratch
# Timezone data
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
ENV TZ=Europe/Berlin
# Copy our static executable.
COPY --from=builder /go/bin/teslaBleHttpProxy /teslaBleHttpProxy
COPY --from=builder /go/bin/key /key
EXPOSE 8080
# Run the teslaBleHttpProxy binary.
ENTRYPOINT ["/teslaBleHttpProxy"]
docker buildx build \
  --platform="linux/armhf,linux/arm/v6,linux/arm/v7,linux/arm64" \
  --output=type=registry \
  -t wimaha/tesla-ble-http-proxy:dev \
  .
Капитон
Вопрос задан30 июля 2024 г.

1 Ответ

2
Пахом
Ответ получен9 сентября 2024 г.

Ваш ответ

Загрузить файл.