29 lines
689 B
Docker
29 lines
689 B
Docker
# 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"]
|