0Pricing
React Academy · 강의

React/Next.js 앱 도커화하기

Next.js 앱용 다단계 Dockerfile을 작성하고 Docker Compose로 로컬에서 실행합니다.

React/Next.js 앱 도커화하기은(는) CoddyKit의 무료 React Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 React Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Docker를 사용하는 이유

Docker 컨테이너는 앱과 종속성을 함께 패키징하여 개발, 스테이징, 프로덕션 환경에서 일관된 동작을 보장합니다. 동일한 이미지가 어디서나 실행됩니다.

일반 React SPA용 Dockerfile

두 단계로 빌드합니다. Node.js로 빌드한 후 Nginx로 정적 출력물을 제공합니다.

# Stage 1: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Stage 2: Serve with Nginx
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

SPA 라우팅을 위한 Nginx 설정

모든 경로에 index.html을 제공하도록 Nginx를 구성합니다(클라이언트 측 라우팅 지원).

# nginx.conf
server {
  listen 80;
  root /usr/share/nginx/html;
  index index.html;

  location / {
    try_files $uri $uri/ /index.html; # SPA routing
  }

  location ~* \.(js|css|png|jpg|woff2)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
  }
}

Next.js 독립 실행형 모드 Dockerfile

Next.js 12 이상에서는 output: 'standalone'을 지원하며, 최소한의 프로덕션 이미지에 필요한 파일만 복사합니다.

// next.config.js
module.exports = { output: 'standalone' };

# Dockerfile (Next.js standalone)
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]

.dockerignore

불필요한 파일을 Docker 빌드 컨텍스트에서 제외하여 빌드 속도를 높이고 이미지 크기를 줄입니다.

node_modules
.next
dist
.env*
.git
README.md
*.test.ts

빌드 및 실행

이미지를 빌드하고 로컬에서 실행합니다.

# Build:
docker build -t my-next-app .

# Run:
docker run -p 3000:3000 -e DATABASE_URL=postgres://... my-next-app

# Check size:
docker images my-next-app

로컬 개발을 위한 Docker Compose

Docker Compose를 사용하면 단일 명령으로 앱과 해당 의존성(데이터베이스, Redis)을 함께 실행할 수 있습니다.

# docker-compose.yml
services:
  web:
    build: .
    ports: ['3000:3000']
    environment:
      DATABASE_URL: postgresql://postgres:password@db:5432/myapp
    depends_on: [db]
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_PASSWORD: password
      POSTGRES_DB: myapp
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

상태 확인

오케스트레이터가 컨테이너가 준비되었는지 알 수 있도록 Dockerfile에 상태 확인을 추가합니다.

HEALTHCHECK --interval=30s --timeout=3s \
  CMD curl -f http://localhost:3000/api/health || exit 1

실행 시 환경 변수

docker run 시점에 환경 변수를 전달하거나 --env-file을 사용합니다. 비밀 정보를 이미지에 절대 포함하지 마세요.

docker run -p 3000:3000 \
  --env-file .env.production \
  my-next-app

다중 플랫폼 빌드

Docker Buildx를 사용하여 여러 CPU 아키텍처용 이미지를 빌드합니다(M1 Mac과 클라우드 가상 머신에는 ARM64, 대부분의 서버에는 AMD64).

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t myregistry/my-next-app:latest \
  --push .

빠른 확인

React/Next.js 앱에서 다단계 Docker 빌드를 사용하면 어떤 이점이 있나요?

복습

다단계 Dockerfile을 사용하세요. Node.js는 빌드에, Nginx 또는 node:alpine은 제공에 사용합니다. Next.js 설정에 output: 'standalone'을 추가하여 최소한의 이미지를 만드세요. 로컬 개발에는 Docker Compose를 사용하고, 실행 시 환경 변수로 비밀 정보를 전달하며, ARM과 AMD64 호환성을 위해 Buildx로 다중 플랫폼 이미지를 빌드하세요.

자주 묻는 질문

“React/Next.js 앱 도커화하기” 강의는 무료인가요?

네 — “React/Next.js 앱 도커화하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 React Academy 강의 전체를 잠금 해제할 수 있습니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“React/Next.js 앱 도커화하기”에서 뭘 배우나요?

Next.js 앱용 다단계 Dockerfile을 작성하고 Docker Compose로 로컬에서 실행합니다. 브라우저에서 직접 실행하는 실습 코드로 React Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

React Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 React Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“React/Next.js 앱 도커화하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 React Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 React Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Vercel에 배포하기: 구성 없이 배포와 미리 보기 URL
  2. AWS S3와 CloudFront에서 React SPA 호스팅하기
  3. React/Next.js 앱 도커화하기
  4. React용 GitHub Actions CI/CD
← React Academy(으)로 돌아가기