Docker와 NGINX로 웹 앱 서버 배포 방법

웹 애플리케이션을 Docker와 NGINX로 자체 서버에 배포하는 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Linux 기반 서버에서 Docker와 NGINX를 사용한 웹 애플리케이션 배포를 처음 시도하는 개발자 및 중급자.

난이도: 중간 (Docker와 NGINX 기본 지식 필요)

핵심 요약

  • Dockerfile 생성
  • FROM node:20-alpine, WORKDIR /app, CMD ["npm", "start"] 등으로 애플리케이션 컨테이너화
  • 컨테이너 빌드 및 실행
  • docker build -t my-react-app 명령어로 이미지 빌드, docker run -d -p 3000:3000으로 컨테이너 실행
  • NGINX 설정
  • /etc/nginx/sites-available/myapp에 프록시 설정 파일 작성 후 sudo ln -s로 활성화
  • SSL 인증서 적용
  • ssl_certificatessl_certificate_key 경로 지정하여 HTTPS 지원 활성화

섹션별 세부 요약

1. Dockerfile 설정 및 빌드

  • Dockerfile 생성: Node.js 기반 이미지 사용, 애플리케이션 코드 복사, npm installnpm start 명령어 지정
  • docker build -t my-react-app 명령어로 이미지 생성
  • docker run -d -p 3000:3000으로 컨테이너 실행 및 포트 매핑

2. NGINX 설치 및 구성

  • NGINX 설정 파일 경로: /etc/nginx/nginx.conf (메인 설정), /etc/nginx/sites-available/ (사이트별 설정)
  • sudo nano /etc/nginx/sites-available/myapp 명령어로 설정 파일 생성
  • proxy_pass http://localhost:3000로 애플리케이션 요청 전달
  • sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/로 설정 활성화

3. SSL 인증서 적용 (HTTPS 활성화)

  • server 블록에 listen 443 ssl 지정, ssl_certificatessl_certificate_key 경로 입력
  • return 301 https://$host$request_uri로 HTTP 요청을 HTTPS로 리다이렉트

4. NGINX 설정 검증 및 재시작

  • sudo nginx -t 명령어로 설정 파일의 문법 오류 검사
  • sudo systemctl restart nginx로 설정 적용

결론

  • Docker와 NGINX를 통해 서버에 애플리케이션을 배포할 때는 docker build, docker run, sudo systemctl restart nginx 명령어를 순차적으로 수행해야 함.
  • SSL 인증서 적용 시 ssl_certificatessl_certificate_key 경로를 정확히 입력해야 하며, 설정 적용 전 nginx -t로 오류 검사를 반드시 수행해야 함.
  • 이 방법은 애플리케이션의 유연성과 성능 향상, 비용 절감 효과를 제공하며, 자체 서버 관리에 대한 이해도를 높이는 데 도움이 됨.