29 lines
995 B
Docker
29 lines
995 B
Docker
FROM node:24-alpine AS web-build
|
|
WORKDIR /src
|
|
COPY web/package.json web/package-lock.json ./web/
|
|
RUN cd web && npm ci
|
|
COPY seo ./seo
|
|
COPY web ./web
|
|
RUN cd web && npm run build:client && npx vite build --ssr src/entry-server.jsx --outDir .ssr && npm prune --omit=dev
|
|
|
|
FROM golang:1.26-alpine AS build
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/server ./cmd/server
|
|
|
|
FROM node:24-alpine
|
|
RUN apk add --no-cache ca-certificates tzdata && adduser -D -u 10001 app
|
|
COPY --from=build /out/server /usr/local/bin/server
|
|
WORKDIR /app
|
|
COPY --from=web-build /src/web/dist ./web/dist
|
|
COPY --from=web-build /src/web/.ssr ./web/.ssr
|
|
COPY --from=web-build /src/web/node_modules ./web/node_modules
|
|
COPY web/package.json ./web/package.json
|
|
COPY web/scripts/render-page.mjs web/scripts/seo-document.mjs ./web/scripts/
|
|
ENV WEB_DIR=/app/web/dist SSR_RENDERER=/app/web/scripts/render-page.mjs
|
|
USER app
|
|
EXPOSE 8080
|
|
ENTRYPOINT ["server"]
|