[Server] Docker 이미지를 사용해 EC2 서버에 Spring Boot 배포해보기!
오늘은 Spring Boot 프로젝트를 Docker를 이용해서 EC2 서버에 배포하는 방법을 알아보겠습니다.
우선 아래와 같이 Spring Boot 프로젝트를 생성해줍니다. 종속성은 Spring Web만 추가해줬습니다.
- Spring Boot 3.2.5
- Java 17
그리고 간단하게 'Hello World!'를 출력하는 컨트롤러를 하나 만들어줍니다!
그리고 프로젝트에 Dockerfile을 작성해줍니다.
다음으로 docker 이미지를 만들기 위해 터미널에서 프로젝트 내로 경로를 이동하고 아래와 같이 입력해줍니다.
docker build -t [dockerHub ID]/[이미지 이름] .
그리고 아래 명령어로 docker 이미지를 docker hub에 푸쉬해줍니다.
docker push [dockerHub ID]/[이미지 이름]
이때 'requested access to the resource is denied' 오류가 발생 시 아래 글을 참고해주세요 !!
이제 Amazon EC2 인스턴스를 생성해주어야 합니다. 아래 글의 과정을 모두 완료해주세요 ~
위 과정을 모두 완료하셨으면 생성된 인스턴스로 들어가서 연결을 눌러줍니다.
그리고 SSH 클라이언트를 클릭하고 설명대로 따라하시면 됩니다.
저는 cmd창에서 연결하였는데 연결이 성공하면 아래와 같이 됩니다.
아까 docker hub에 올려둔 이미지를 pull 해와야 하는데 우선 EC2에 docker를 설치해줘야 합니다. EC2에 docker 설치는 아래 명령어를 입력해줍니다.
sudo apt update
sudo apt install docker.io
sudo apt install docker-compose
설치가 완료되었으면 아래 명령어를 입력하여 아까 docker hub에 올려둔 이미지를 pull 해옵니다.
sudo docker pull [dockerHub ID]/[이미지 이름]
그리고 컨테이너를 실행시켜줍니다.
sudo docker run -d -p 8080:8080 [dockerHub Id]/[이미지 이름]
- 여기서 -d는 백그라운드에서 실행한다는 뜻입니다
- -p는 포트번호를 설정하는 8080:9090 이면 로컬 pc에서는 8080포트로 실행되고, docker에서는 9090포트로 실행된다는 의미입니다.
'sudo docker ps'를 입력하여 실행된 컨테이너를 확인해줍니다.
docker ps
docker ps -a // 정지된 것도 보여줌
여기까지 성공하셨다면 EC2에 접속해보면 아래와 같이 성공적으로 'Hello World!' 가 뜨는 것을 볼 수 있습니다 ~~
다음에는 GitHubAction을 이용하여 배포 자동화를 해보겠습니다 ~!