IT/DevOps

[AWS] AWS EC2에서 Docker-compose로 Nginx, Tomcat 연동

어흥꼬비 2025. 2. 8.

이전 포스팅

 

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포

이 포스팅에서는 ssh로 EC2 인스턴스에 접속한 다음에 이루어지는 개발환경 세팅을 다룬다.패키지 최신화우분투 환경이라 아래 명령어들로 패키지 목록과 패키지를 최신화한다.sudo apt update -ysudo

yaga.tistory.com


이 포스팅에서는 Docker-compose로 Nginx와 Tomcat을 각각 실행 시킨 후 리버스 프록시 설정으로 Nginx와 Tomcat을 연동하는 걸 다룬다.

docker-compose 설치

docker-compose를 설치한다.

sudo apt install -y docker-compose

이 포스팅에서는 아래와 같은 폴더 구조로 진행했다.

Nginx

Dockerfile

최신 Nginx 이미지를 가져오고 nginx.conf 복사 뒤 포트를 80으로 설정

이 때 EXPOSE 80은 문서화용이다.(실제 포트 설정과는 상관이 없다.)

nginx.conf

프로세서

하나의 프로세스만 처리하고 동시 처리할 수 있는 연결 수는 1024로 설정HTTP 설정 관련은 80번로 설정, 테스트니까 server_name은 로컬로 설정했다.중요한 부분proxy_pass의 "http://tomcat:8080"의 tomcat은 docker-compose.yml에서 설정한 서비스명과 동일해야 한다.proxy_set_header는 클라이언트의 요청 헤더 정보를 tomcat으로 전달한다.

Tomcat

Dockerfile

tomcat9버전 + jdk21 이미지를 가져와서 index.jsp를 복사 한 뒤 8080으로 포트를 설정한다.

index.jsp 또는 html

docker-compose.yml

여기서 Nginx와 tomcat을 같이 연결시킨다.

여기서 services밑의 tomcat이라는 서비스명이 nginx.conf의 proxy_pass에 서비스명이다.

networks를 통해 nginx와 tomcat을 하나의 네트워크로 묶었고 nginx는 tomcat이 실행된 뒤 실행되도록 depends_on을 걸었다.

Docker Compose로 컨테이너 빌드/실행

docker-compose-yml이 있는 경로로 이동 후 아래 명령어 입력 시 docker-compse.yml 파일을 기반으로

컨테이너를 백그라운드로 실행하고 만일 이미지가 없으면 빌드 후 컨테이너를 실행한다.

sudo docker-compose up -d --build

컨테이너가 실행중인지 아래명령어로 확인한다.

sudo docker ps -a

호출 테스트

로컬 브라우저에서 EC2 IP(80 기본 포트라서 생략 가능)만 입력한 다음 아래처럼 index페이지가 표시되어야 한다.

정상적으로 Nginx와 Tomcat이 연동이 되었다.


개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.

틀린 점 있을 경우 댓글 부탁드립니다.

댓글