# syntax=docker/dockerfile:1.7 FROM --platform=$BUILDPLATFORM node:20-alpine AS frontend-builder WORKDIR /app/frontend COPY frontend/package.json frontend/pnpm-lock.yaml ./ RUN corepack enable && pnpm install --frozen-lockfile COPY frontend/ ./ RUN pnpm build FROM --platform=$BUILDPLATFORM golang:1.24 AS backend-builder WORKDIR /app/backend COPY backend/go.mod backend/go.sum ./ RUN go mod download COPY backend/ ./ COPY --from=frontend-builder /app/frontend/dist ./web ARG TARGETARCH RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH:-amd64} go build -trimpath -ldflags="-s -w" -o /out/shooting-event . FROM --platform=$TARGETPLATFORM alpine:3.21 RUN addgroup -S app && adduser -S app -G app && apk add --no-cache ca-certificates WORKDIR /app COPY --from=backend-builder /out/shooting-event /app/shooting-event COPY --from=backend-builder /app/backend/web /app/web RUN mkdir -p /app/data && chown -R app:app /app USER app ENV PORT=8080 ENV DB_PATH=/app/data/shooting.db ENV WEB_DIR=/app/web EXPOSE 8080 ENTRYPOINT ["/app/shooting-event"]