# Build stage FROM node:20-alpine AS build WORKDIR /app # Copy package files COPY package*.json ./ # Install all dependencies (including dev dependencies for build) RUN npm ci # Copy source code COPY . . # Create a dummy .env file for build RUN echo 'DATABASE_URL="postgresql://dummy:dummy@localhost:5432/dummy"' > .env && \ echo 'JWT_PRIVATE_KEY_PATH=./data/jwt_private.pem' >> .env && \ echo 'JWT_PUBLIC_KEY_PATH=./data/jwt_public.pem' >> .env && \ echo 'APP_CONFIG_PATH=./data/app.json' >> .env # Build the application RUN npm run build #RUN npx drizzle-kit generate # Runtime stage FROM node:20-alpine AS runtime WORKDIR /app # Copy package files COPY --from=build /app/package*.json ./ COPY --from=build /app/drizzle ./drizzle # Install only production dependencies RUN npm ci --only=production # Copy built application COPY --from=build /app/build ./build # Expose the port the app runs on EXPOSE 3000 # Start the application CMD ["node", "build/index.js"]