Files
noah-template-backend/Dockerfile
2026-07-16 14:04:00 +05:30

51 lines
1.4 KiB
Docker

FROM oven/bun:1.2.18 AS builder
WORKDIR /build
# Copy the entire build context (which contains whatever project folders exist)
COPY . .
# Conditionally build website if present
RUN if [ -d "website" ]; then \
cd website && bun install && bun run build && cd ..; \
fi
# Conditionally build mobile if present
RUN if [ -d "mobile" ]; then \
cd mobile && bun install && bun run build:web && cd ..; \
fi
# Conditionally build games if present
RUN if [ -d "games" ]; then \
cd games && bun install && bun run build && cd ..; \
fi
FROM oven/bun:1.2.18
WORKDIR /app
# Copy backend configuration and install production dependencies
COPY backend/package.json backend/bun.lock backend/tsconfig.json ./
RUN bun install --frozen-lockfile --production
# Copy backend source code
COPY backend/src ./src
# Create public assets directories
RUN mkdir -p public public/mobile public/games
# Copy all build context to a temp folder in production stage to run conditional copies
COPY --from=builder /build /tmp/build
RUN if [ -d "/tmp/build/website/dist" ]; then cp -r /tmp/build/website/dist/* ./public/; fi
RUN if [ -d "/tmp/build/mobile/dist" ]; then cp -r /tmp/build/mobile/dist/* ./public/mobile/; fi
RUN if [ -d "/tmp/build/games/dist" ]; then cp -r /tmp/build/games/dist/* ./public/games/; fi
RUN rm -rf /tmp/build
ENV NODE_ENV=production
ENV PORT=8080
ENV API_PREFIX=/api
EXPOSE 8080
CMD ["bun", "src/index.ts"]