FROM node:20-alpine AS builder WORKDIR /app COPY package.json package-lock.json ./ COPY client/package.json client/package.json COPY server/package.json server/package.json RUN npm ci COPY client ./client COPY server ./server RUN npm run build FROM node:20-alpine WORKDIR /app ENV NODE_ENV=production ENV DATABASE_PATH=/data/stellar.sqlite COPY package.json package-lock.json ./ COPY server/package.json server/package.json RUN npm ci --omit=dev --workspace server COPY --from=builder /app/server/dist ./server/dist COPY --from=builder /app/client/dist ./client/dist EXPOSE 3000 VOLUME ["/data"] CMD ["node", "server/dist/server.js"]