# syntax=docker/dockerfile:1
# Packages a binary that was already built for each architecture, so the arm64 image needs
# no emulation. Build the binaries, then the image:
#
#   for a in amd64 arm64; do
#     mkdir -p dist/bin/linux_$a
#     CGO_ENABLED=0 GOOS=linux GOARCH=$a go build -trimpath -ldflags "-s -w" -o dist/bin/linux_$a/sandbar ./cmd/sandbar
#   done
#   docker buildx build --platform linux/amd64,linux/arm64 -t sandbar .
FROM --platform=$BUILDPLATFORM alpine:3.22 AS prep
RUN apk add --no-cache ca-certificates \
 && mkdir /data && chown 65532:65532 /data

FROM scratch
ARG TARGETARCH
LABEL org.opencontainers.image.title="Sandbar" \
      org.opencontainers.image.description="Notifications, monitoring, on-call and incident response" \
      org.opencontainers.image.source="https://git.veillax.com/Veillax/sandbar" \
      org.opencontainers.image.licenses="AGPL-3.0-only"
COPY --from=prep /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=prep --chown=65532:65532 /data /data
COPY dist/bin/linux_${TARGETARCH}/sandbar /sandbar
USER 65532:65532
ENV SANDBAR_DATA=/data
VOLUME ["/data"]
EXPOSE 8090
ENTRYPOINT ["/sandbar"]
CMD ["-listen", ":8090"]
