Files
2026-06-08 22:09:35 +08:00

31 lines
928 B
Docker

FROM node:20-alpine AS frontend
WORKDIR /app/web
COPY web/package.json ./
RUN npm install
COPY web/ ./
RUN npm run build
FROM golang:1.23-alpine AS wasm
WORKDIR /app
COPY go.mod ./
RUN go mod download
COPY . .
RUN GOOS=js GOARCH=wasm go build -o web/public/ncmdump.wasm ./cmd/wasm
RUN cp "$(go env GOROOT)/lib/wasm/wasm_exec.js" web/public/
FROM golang:1.23-alpine AS backend
WORKDIR /app
COPY go.mod ./
RUN go mod download
COPY . .
COPY --from=frontend /app/cmd/server/static/dist ./cmd/server/static/dist
COPY --from=wasm /app/web/public/ncmdump.wasm ./cmd/server/static/dist/ncmdump.wasm
COPY --from=wasm /app/web/public/wasm_exec.js ./cmd/server/static/dist/wasm_exec.js
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o /app/server ./cmd/server
FROM alpine:3.20
RUN apk add --no-cache ca-certificates tzdata
COPY --from=backend /app/server /usr/local/bin/ncmdump-server
EXPOSE 8080
ENTRYPOINT ["ncmdump-server"]