# syntax=docker/dockerfile:1 FROM node:22-alpine AS frontend WORKDIR /src/web RUN corepack enable COPY web/package.json web/pnpm-lock.yaml ./ RUN pnpm install --frozen-lockfile COPY web/ ./ RUN pnpm build FROM golang:1.26-alpine AS backend WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY cmd/ cmd/ COPY internal/ internal/ COPY web/embed.go web/ COPY --from=frontend /src/web/dist web/dist RUN CGO_ENABLED=0 go build -o /out/solopm ./cmd/solopm FROM alpine:3.20 RUN apk add --no-cache ca-certificates && \ addgroup -S solopm && adduser -S solopm -G solopm COPY --from=backend /out/solopm /usr/local/bin/solopm USER solopm EXPOSE 8080 ENTRYPOINT ["solopm"] CMD ["serve"]