# ---- Build frontend ---- FROM node:22-slim AS web-build WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # ---- Runtime ---- FROM node:22-slim WORKDIR /app ENV NODE_ENV=production ENV HOST=0.0.0.0 ENV PORT=3000 COPY package*.json ./ RUN npm ci --omit=dev && npm cache clean --force # Built frontend (vite outputs to dist/) COPY --from=web-build /app/dist ./dist # Server source (tsx runs TS directly in production) COPY server ./server COPY shared ./shared COPY tsconfig.json ./ # Persistent SQLite data RUN mkdir -p /app/data VOLUME /app/data EXPOSE 3000 CMD ["npx", "tsx", "server/index.ts"]