34 lines
1.3 KiB
Docker
34 lines
1.3 KiB
Docker
# Context: project root
|
|
# docker build -f server/Dockerfile -t containarr-server .
|
|
|
|
# ── Stage 1 : build SvelteKit ─────────────────────────────────────────────────
|
|
FROM node:20-alpine AS web-builder
|
|
WORKDIR /web
|
|
COPY web/package*.json ./
|
|
RUN npm ci
|
|
COPY web/ ./
|
|
RUN npm run build
|
|
# Output: /web/build/
|
|
|
|
# ── Stage 2 : build Go server ─────────────────────────────────────────────────
|
|
FROM golang:1.23-alpine AS go-builder
|
|
RUN apk add --no-cache gcc musl-dev
|
|
WORKDIR /src
|
|
COPY server/go.mod server/go.sum ./
|
|
RUN go mod download
|
|
COPY server/ ./
|
|
RUN CGO_ENABLED=1 GOOS=linux go build -ldflags="-s -w" -o /bin/containarr-server ./cmd/server
|
|
|
|
# ── Stage 3 : image finale ────────────────────────────────────────────────────
|
|
FROM alpine:3.20
|
|
RUN apk add --no-cache ca-certificates tzdata
|
|
|
|
WORKDIR /app
|
|
COPY --from=go-builder /bin/containarr-server ./containarr-server
|
|
COPY --from=web-builder /web/build ./web/build
|
|
|
|
VOLUME ["/data"]
|
|
EXPOSE 8080 9090
|
|
|
|
ENTRYPOINT ["/app/containarr-server"]
|