build(docker): build frontend and server inside container; remove host build deps
This commit is contained in:
parent
11104dbf29
commit
7591f001c1
6 changed files with 75 additions and 43 deletions
|
|
@ -1,19 +1,42 @@
|
|||
FROM node:20-bullseye-slim
|
||||
######
|
||||
# Multi-stage dev image that builds frontend and server inside container
|
||||
######
|
||||
|
||||
# ---------- Frontend builder ----------
|
||||
FROM node:20-bullseye-slim AS frontend-builder
|
||||
ENV npm_config_registry=https://registry.npmmirror.com
|
||||
WORKDIR /app
|
||||
COPY package.json ./
|
||||
COPY pnpm-lock.yaml ./
|
||||
RUN npm install --no-audit --no-fund
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
|
||||
# ---------- Server builder ----------
|
||||
FROM node:20-bullseye-slim AS server-builder
|
||||
ENV npm_config_registry=https://registry.npmmirror.com
|
||||
ENV npm_config_build_from_source=true
|
||||
|
||||
# Build prerequisites for native modules (better-sqlite3)
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends python3 make g++ \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
WORKDIR /app/server
|
||||
COPY server/package.json ./package.json
|
||||
RUN npm install --no-audit --no-fund --build-from-source
|
||||
COPY server/tsconfig.json ./tsconfig.json
|
||||
COPY server/src ./src
|
||||
RUN npm run build
|
||||
|
||||
# ---------- Runtime ----------
|
||||
FROM node:20-bullseye-slim
|
||||
ENV npm_config_registry=https://registry.npmmirror.com
|
||||
WORKDIR /app
|
||||
ENV PORT=3004
|
||||
ENV DB_PATH=/data/purchase.db
|
||||
|
||||
# Use host-built frontend; only run server here
|
||||
COPY server/package.json server/tsconfig.json ./server/
|
||||
COPY server/src ./server/src
|
||||
|
||||
RUN cd server && npm install --build-from-source && npm run build
|
||||
COPY --from=server-builder /app/server/dist ./server/dist
|
||||
COPY --from=server-builder /app/server/node_modules ./server/node_modules
|
||||
COPY server/package.json ./server/package.json
|
||||
COPY --from=frontend-builder /app/dist ./frontend
|
||||
|
||||
EXPOSE 3004
|
||||
CMD ["node", "server/dist/index.js"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue