Files
startover/Dockerfile
T
Johngreen bd48cafcc9 ci: IDC 서버 자동배포 파이프라인 구축
- Dockerfile: Turborepo 멀티스테이지 빌드 (Next.js standalone)
- docker-compose.prod.yml: PostgreSQL/Redis/Nginx/Web/Admin 프로덕션 스택
- deploy/poll-deploy.sh: cron 기반 자동배포 (매분 Gitea 폴링)
- deploy/nginx/default.conf: 리버스 프록시 설정
- next.config.ts: output standalone 추가
- .env.production.example: 환경변수 템플릿

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 22:28:09 +09:00

57 lines
1.8 KiB
Docker

# ============================================
# Re:Link Turborepo Multi-stage Dockerfile
# Usage: docker build --build-arg APP_NAME=web .
# ============================================
# --- Stage 1: Base ---
FROM node:20-alpine AS base
RUN apk add --no-cache libc6-compat
RUN corepack enable && corepack prepare pnpm@8.10.0 --activate
WORKDIR /app
# --- Stage 2: Install & Build ---
FROM base AS builder
ARG APP_NAME=web
# Copy workspace config first for better caching
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json turbo.json ./
COPY apps/web/package.json ./apps/web/
COPY apps/admin/package.json ./apps/admin/
COPY packages/shared/package.json ./packages/shared/
COPY packages/domain/package.json ./packages/domain/
COPY packages/application/package.json ./packages/application/
COPY packages/infrastructure/package.json ./packages/infrastructure/
COPY packages/database/package.json ./packages/database/
COPY packages/analytics/package.json ./packages/analytics/
COPY packages/ui/package.json ./packages/ui/
RUN pnpm install --frozen-lockfile
# Copy all source code
COPY . .
# Generate Prisma client & build
RUN pnpm --filter @relink/database prisma generate
RUN pnpm turbo run build --filter=@relink/${APP_NAME}
# --- Stage 3: Runner ---
FROM node:20-alpine AS runner
ARG APP_NAME=web
ENV NODE_ENV=production
ENV APP_NAME=${APP_NAME}
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
WORKDIR /app
COPY --from=builder /app/apps/${APP_NAME}/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/apps/${APP_NAME}/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/apps/${APP_NAME}/.next/static ./apps/${APP_NAME}/.next/static
USER nextjs
EXPOSE 3000
ENV HOSTNAME="0.0.0.0"
ENV PORT=3000
CMD ["sh", "-c", "node apps/${APP_NAME}/server.js"]