배포 모드 전환: 프로덕션 Dockerfile + docker-compose 재구성

- frontend/Dockerfile: 멀티스테이지 (node 빌드 → serve로 dist 정적 서빙).
  포트 5173은 그대로 유지해서 Caddy 설정 변경 불필요
- backend/Dockerfile: npm ci --omit=dev + npm start (node --watch 제거)
- docker-compose.yml: volumes/모듈 마운트 제거, build 기반으로 변경,
  restart: unless-stopped, NODE_ENV=production 추가
- .dockerignore 양쪽 추가해서 이미지에 node_modules/.git 제외

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
caadiq 2026-04-21 20:38:12 +09:00
parent 66cafdb540
commit ea9a6461f2
5 changed files with 35 additions and 16 deletions

3
backend/.dockerignore Normal file
View file

@ -0,0 +1,3 @@
node_modules
.git
*.log

7
backend/Dockerfile Normal file
View file

@ -0,0 +1,7 @@
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

View file

@ -1,36 +1,26 @@
services:
frontend:
build: ./frontend
container_name: maplestory-frontend
image: node:22-alpine
working_dir: /app
volumes:
- ./frontend:/app
- frontend_modules:/app/node_modules
command: sh -c "npm install --legacy-peer-deps && npm run dev"
labels:
- "com.centurylinklabs.watchtower.enable=false"
networks:
- caddy
restart: unless-stopped
backend:
build: ./backend
container_name: maplestory-backend
image: node:22-alpine
working_dir: /app
volumes:
- ./backend:/app
- backend_modules:/app/node_modules
command: sh -c "npm install && npm run dev"
env_file: .env
environment:
- NODE_ENV=production
labels:
- "com.centurylinklabs.watchtower.enable=false"
networks:
- caddy
- db
- app
volumes:
frontend_modules:
backend_modules:
restart: unless-stopped
networks:
caddy:

4
frontend/.dockerignore Normal file
View file

@ -0,0 +1,4 @@
node_modules
dist
.git
*.log

15
frontend/Dockerfile Normal file
View file

@ -0,0 +1,15 @@
# 빌드 단계
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --include=dev --legacy-peer-deps
COPY . .
RUN npm run build
# 정적 파일 서빙 단계
FROM node:22-alpine
WORKDIR /app
RUN npm install -g serve
COPY --from=builder /app/dist ./dist
EXPOSE 5173
CMD ["serve", "-s", "dist", "-l", "5173"]