31 lines
928 B
Docker
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"]
|