FROM --platform=$BUILDPLATFORM golang:1.24 AS build ARG TARGETOS TARGETARCH TARGETVARIANT ARG GOOS=$TARGETOS ARG GOARCH=$TARGETARCH RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates && \ case "$TARGETARCH$TARGETVARIANT" in \ "arm64") apt-get install -y gcc-aarch64-linux-gnu ;; \ "armv7") apt-get install -y gcc-arm-linux-gnueabihf ;; \ "riscv64") apt-get install -y gcc-riscv64-linux-gnu ;; \ "amd64") apt-get install -y gcc-x86-64-linux-gnu ;; \ *) echo "Arch '$TARGETARCH$TARGETVARIANT' not supported" && exit 1 ;; \ esac WORKDIR /tmp/app COPY . . RUN go mod download && \ case "$TARGETARCH$TARGETVARIANT" in \ "arm64") export CC="aarch64-linux-gnu-gcc" PIE=true ;; \ "armv7") export CC="arm-linux-gnueabihf-gcc" GOARM="7" ;; \ "riscv64") export CC="riscv64-linux-gnu-gcc" ;; \ "amd64") export CC="x86_64-linux-gnu-gcc" PIE=true ;; \ *) echo "Arch '$TARGETARCH$TARGETVARIANT' not supported" && exit 1 ;; \ esac && \ export CGO_ENABLED=1 LDFLAGS="-s -w -linkmode 'external'" && \ if [ "$PIE" = "true" ]; then \ go build -a -buildmode=pie -trimpath -ldflags "$LDFLAGS -extldflags '-static-pie' -X main.prefix=" -o discord-tweeter; \ else \ go build -a -trimpath -ldflags "$LDFLAGS -extldflags '-static' -X main.prefix=" -o discord-tweeter; \ fi FROM scratch COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ WORKDIR /app COPY --from=build /tmp/app/discord-tweeter . #COPY ./config.example.toml ./config.toml ENTRYPOINT [ "./discord-tweeter" ] #CMD [ "./config.toml" ]