Archived
1
0
This repository has been archived on 2025-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Files
app/apps/backend/Dockerfile

52 lines
1.5 KiB
Docker

FROM oven/bun:1.3 AS base
WORKDIR /app
# Install dependencies
FROM base AS deps
# Copy root package files and lockfile first
COPY package.json bun.lock ./
# Copy workspace structure - all package.json files needed for workspace resolution
COPY packages ./packages
COPY apps ./apps
# Install all dependencies (bun will resolve workspace dependencies)
# Note: We copy full directories but bun only needs package.json files for resolution
RUN bun install --frozen-lockfile
# Build stage
FROM base AS build
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/packages ./packages
# Copy backend source
COPY apps/backend ./apps/backend
# Build backend
WORKDIR /app/apps/backend
RUN bun run build
# Production stage
FROM base AS production
WORKDIR /app
# Copy dependencies and built files
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/packages ./packages
# Copy source code (needed for migrations and tests)
COPY --from=build /app/apps/backend/src ./apps/backend/src
COPY --from=build /app/apps/backend/dist ./apps/backend/dist
COPY --from=build /app/apps/backend/drizzle ./apps/backend/drizzle
COPY --from=build /app/apps/backend/package.json ./apps/backend/
COPY --from=build /app/apps/backend/tsconfig.json ./apps/backend/
COPY --from=build /app/apps/backend/drizzle.config.ts ./apps/backend/
# Set working directory to backend
WORKDIR /app/apps/backend
# Set environment to production
ENV NODE_ENV=production
# Expose port
EXPOSE 3000
# Default command (can be overridden)
CMD ["bun", "run", "start"]