https://www.youtube.com/watch?v=XPtu0i3Mjag&ab_channel=KyeongrokKim
기본적으로 해당 내용을 보기 앞서서, 클라우드, 및 스프링부트, 그레이들, 도커가 무엇인지는 가볍게 파악하고 따라해보자!
FROM openjdk:17-jdk-slim
ADD /build/libs/*.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
다시 클라우드 서버(리눅스) 로 들어와서 git clone 깃명령어로 래파지토리에 커밋되어있던 spring프로젝트를 복사해서 가져온다.
그리고 클라우드 서버환경에서 해당 jar를 실행하거나 Gradle로 빌드하기 위해서는 스프링 프로젝트 설정에 알맞는 jdk를 클라우드서버에도 설치를 해줘야한다.
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로 실행시킨 명령어를 취소하고 도커를 설치해보자!!!
이제 도커로 해당 스프링 APP을 실행시켰으니까 다시 인터넷을 통해서 8080포트로 접속해보자...
접속이 안되는것을 확인할수있다. 그이유는 맨위에 구성도에서 볼수있듯이 이제 클라우드 서버에서 바로 해당 스프링을 실행시키는것이 아니라 도커 호스트안에서 해당 도커 이미지를 실행하는개념이라 외부에서 8080으로 오는 요청을 도커의 8080으로 포트포워딩을 해줘야한다.