피드로 돌아가기
Dev.toDevOps
원문 읽기
Docker容器化部署Node.js应用最佳实践
Multi-stage Build와 Non-root 권한 적용을 통한 Node.js 런타임 최적화
AI 요약
Context
단일 단계 빌드 방식의 Node.js 이미지 사용으로 인한 이미지 크기 증가 및 보안 취약점 발생. 개발 의존성 포함으로 인한 배포 효율 저하와 Root 권한 실행에 따른 컨테이너 보안 리스크 존재.
Technical Solution
- Multi-stage Build 구조 채택을 통한 빌드 환경과 실행 환경의 완전 분리
npm ci --only=production설정을 통한 Production 전용 의존성 추출 및 이미지 경량화- Non-root 사용자(
nodeapp) 정의 및USER지시어 적용을 통한 프로세스 권한 최소화 HEALTHCHECK명령어를 통한 컨테이너 상태 기반의 자가 치유(Self-healing) 메커니즘 구축- Nginx Reverse Proxy 도입 및 HTTP/2 적용을 통한 네트워크 전송 효율 최적화
- Resource Limit(CPU 1, Memory 512M) 설정을 통한 컨테이너 자원 격리 및 안정성 확보
실천 포인트
1. Multi-stage Build를 통해 devDependencies 제거 여부 확인
2. Root 계정이 아닌 별도 생성한 Non-root 사용자로 프로세스 실행 설정
3. `.dockerignore` 파일을 통한 불필요한 로컬 파일 및 `.git` 디렉토리 제외
4. Liveness/Readiness 확인을 위한 전용 `/health` 엔드포인트 구현 및 HEALTHCHECK 설정