SpringBoot App을 Cloud 서버로 배포 후 Docker로 실행해보기

YOBY·2024년 6월 19일
0

https://www.youtube.com/watch?v=XPtu0i3Mjag&ab_channel=KyeongrokKim

  • 김경록님의 유튜브 강의를 참고했다.

기본적으로 해당 내용을 보기 앞서서, 클라우드, 및 스프링부트, 그레이들, 도커가 무엇인지는 가볍게 파악하고 따라해보자!


  • Docker file build
FROM openjdk:17-jdk-slim 
ADD /build/libs/*.jar app.jar 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

  • 위의 사진과 같이 프로젝트 최상단 경로에다가 새로운 File을 생성하기를 눌러서 Dockerfile이라는 이름으로 생성한뒤 저 위에 있는 도커 빌드 명령어를 첨부한다.

  • 다시 클라우드 서버(리눅스) 로 들어와서 git clone 깃명령어로 래파지토리에 커밋되어있던 spring프로젝트를 복사해서 가져온다.

  • 그리고 클라우드 서버환경에서 해당 jar를 실행하거나 Gradle로 빌드하기 위해서는 스프링 프로젝트 설정에 알맞는 jdk를 클라우드서버에도 설치를 해줘야한다.

  • 그리고 -version 옵션을 통해서 자바의 알맞는 버전이 잘설치 되어있는지 확인해보자!

  • 이제 가져온 스프링 프로젝트를 gradle wrapper스크립트를 통해서 빌드를 하면 된다.

  • 해당 경로에 가면 프로젝트/build/libs Gradle를 통해서 빌드된 2개의 jar가 생긴걸 확인할수있다.

  • jar라는 파일은 java archive 파일로써 자바를 라이브러리 및 api형태로 묶는 개념이고 이렇게 실행단위로도 사용할수 있다.

  • java -jar 명령어를 통해서 해당 jar 파일을 실행하면 스프링에 내장된 톰캣에 의해서 자바가 실행하게 된다.

  • 이때 기본적으로 포트 설정을 하지 않았다면 8080포트로 설정이 되어있을것이다.


  • 보통 클라우드는 방화벽이라는 개념이 있고 AWS에서도 보안그룹을 통해서 기본적인 IP 및 포트를 제한할수 있다.

  • 기본적으로 ssh 22포트는 열려있고 우리는 현재 8080포트로 접속해야하기 때문에 8080 포트를 열어주고, IP는 0.0.0.0설정한다.
    0.0.0.0은 모든 IP를 허용하겠다는 의미이다.


  • 위에 사진처럼 이제 aws 및 공인IP를 통해서 해당 스프링프로젝트 8080포트로 접속된것을 확인할수있다.

  • 하지만 우리는 도커로 해당 프로젝트를 실행하기로 구성했기때문에 다시 jar로 실행시킨 명령어를 취소하고 도커를 설치해보자!!!


  • 도커는 미리 설치하고 해당 docker build 명령어를 통해서 해당 프로젝트를 도커 이미지로 생성한다.

  • 도커 파일에 첨부한 내용인데, build/libs/*.jar 모든 jar를 app.jar이라는 이름으로 도커 이미지에 넣어주라는 의미이다.

  • docker images 명령어를 통해 가지고 있는 이미지들 목록을 보는건데 방금 새롭게 생긴걸 springbook-docker라는 이미지가 있는걸 확인할수 있다.

  • 이제 docker run을 통해서 해당 컨테이너를 실행한다.
    간단하게 도커 이미지라는것은 하나의 스냅샷같은 개념이고 컨테이너는 실행환경이라고 생각하면 된다. 스프링프로젝트를 스냅샷으로 찍고 이 스프링프로젝트를 실행환경에다가 담아서 실행시킨다고 생각하면 편하다.

  • 이제 도커로 해당 스프링 APP을 실행시켰으니까 다시 인터넷을 통해서 8080포트로 접속해보자...

  • 접속이 안되는것을 확인할수있다. 그이유는 맨위에 구성도에서 볼수있듯이 이제 클라우드 서버에서 바로 해당 스프링을 실행시키는것이 아니라 도커 호스트안에서 해당 도커 이미지를 실행하는개념이라 외부에서 8080으로 오는 요청을 도커의 8080으로 포트포워딩을 해줘야한다.

  • 이렇게 하면 8080으로 요청이 외부에서 들어오면 이 요청은 도커 호스트 8080으로 포트포워딩 되어있기때문에 이제 인터넷에 해당 8080으로 접속하면 스프링 APP이 켜지게 된다.

0개의 댓글

관련 채용 정보