# Build stage FROM oven/bun:1 AS build WORKDIR /app # Copy package files COPY package.json bun.lock* ./ # Copy local SDK dependency (package.json references file:../encryptid-sdk) COPY --from=encryptid-sdk . /encryptid-sdk/ RUN bun install --frozen-lockfile # Copy source COPY . . # Build frontend (skip tsc in Docker — type checking is done in CI/local dev) RUN bunx vite build # Production stage FROM oven/bun:1-slim AS production WORKDIR /app # Copy built assets and server COPY --from=build /app/dist ./dist COPY --from=build /app/server ./server COPY --from=build /app/lib ./lib COPY --from=build /app/package.json . COPY --from=build /encryptid-sdk /encryptid-sdk # Install production dependencies only RUN bun install --production --frozen-lockfile # Create data directory RUN mkdir -p /data/communities # Set environment ENV NODE_ENV=production ENV STORAGE_DIR=/data/communities ENV PORT=3000 # Data volume for persistence VOLUME /data/communities EXPOSE 3000 CMD ["bun", "run", "server/index.ts"]