# ---------- Build stage ---------- ARG GO_VERSION=1.24 FROM golang:${GO_VERSION}-bookworm AS builder WORKDIR /src RUN apt-get update && apt-get install -y git # Clone sources from GitHub RUN git clone https://github.com/boltrunner/gcli2api.git . COPY server.go ./internal/server/server.go # Optionally download modules, build RUN go mod download RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH:-amd64} \ go build -trimpath -ldflags="-s -w" -o /out/gcli2api . # ---------- Runtime stage ---------- FROM alpine:3.20 AS runtime WORKDIR /app USER root RUN apk --no-cache add ca-certificates RUN chmod -R 777 /app COPY --from=builder /out/gcli2api /app/gcli2api COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh RUN adduser -D -H -u 10001 appuser USER 10001 ENTRYPOINT ["/entrypoint.sh"] CMD ["server", "-c", "/app/config.json"]