64 lines
2.1 KiB
Docker
64 lines
2.1 KiB
Docker
FROM golang:1.24-bookworm
|
|
|
|
# Enable ARM multiarch and install cross-compilers + ARM versions of CGo deps
|
|
RUN dpkg --add-architecture armhf \
|
|
&& dpkg --add-architecture arm64 \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
crossbuild-essential-armhf \
|
|
crossbuild-essential-arm64 \
|
|
pkg-config \
|
|
libasound2-dev:armhf \
|
|
libopus-dev:armhf \
|
|
libopusfile-dev:armhf \
|
|
libogg-dev:armhf \
|
|
libasound2-dev:arm64 \
|
|
libopus-dev:arm64 \
|
|
libopusfile-dev:arm64 \
|
|
libogg-dev:arm64 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
|
|
RUN mkdir -p /out
|
|
|
|
# armhf (RPi 2/3/4 32-bit, RPi Zero 2 W 32-bit)
|
|
RUN CGO_ENABLED=1 \
|
|
CC=arm-linux-gnueabihf-gcc \
|
|
PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig \
|
|
GOOS=linux GOARCH=arm GOARM=7 \
|
|
go build -buildvcs=false -o /out/sendspin-client-armhf ./cmd/client/ \
|
|
&& CGO_ENABLED=1 \
|
|
CC=arm-linux-gnueabihf-gcc \
|
|
PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig \
|
|
GOOS=linux GOARCH=arm GOARM=7 \
|
|
go build -buildvcs=false -o /out/sendspin-server-armhf ./cmd/server/ \
|
|
&& CGO_ENABLED=1 \
|
|
CC=arm-linux-gnueabihf-gcc \
|
|
PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig \
|
|
GOOS=linux GOARCH=arm GOARM=7 \
|
|
go build -buildvcs=false -o /out/sendspin-live-server-armhf ./cmd/live-server/
|
|
|
|
# arm64 (RPi 3/4/5 64-bit)
|
|
RUN CGO_ENABLED=1 \
|
|
CC=aarch64-linux-gnu-gcc \
|
|
PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig \
|
|
GOOS=linux GOARCH=arm64 \
|
|
go build -buildvcs=false -o /out/sendspin-client-arm64 ./cmd/client/ \
|
|
&& CGO_ENABLED=1 \
|
|
CC=aarch64-linux-gnu-gcc \
|
|
PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig \
|
|
GOOS=linux GOARCH=arm64 \
|
|
go build -buildvcs=false -o /out/sendspin-server-arm64 ./cmd/server/ \
|
|
&& CGO_ENABLED=1 \
|
|
CC=aarch64-linux-gnu-gcc \
|
|
PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig \
|
|
GOOS=linux GOARCH=arm64 \
|
|
go build -buildvcs=false -o /out/sendspin-live-server-arm64 ./cmd/live-server/
|
|
|
|
CMD ["sh", "-c", "cp /out/* /binaries/"]
|