FROM oven/bun:1 AS deps WORKDIR /app RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* COPY package.json bun.lock ./ RUN bun install --frozen-lockfile FROM deps AS build COPY . . RUN bun run build FROM oven/bun:1-slim AS production WORKDIR /app ENV NODE_ENV=production COPY --from=deps /app/node_modules ./node_modules COPY --from=build /app/dist/client ./dist/client COPY src/server ./src/server COPY src/db ./src/db COPY src/shared ./src/shared COPY drizzle.config.ts package.json ./ COPY drizzle ./drizzle COPY entrypoint.sh ./ RUN chmod +x entrypoint.sh && mkdir -p data uploads EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD bun -e "fetch('http://localhost:3000/api/health').then(r=>r.ok?process.exit(0):process.exit(1)).catch(()=>process.exit(1))" ENTRYPOINT ["./entrypoint.sh"]