AWS Ec2 인스터스와 Docker을 연결하여 Springboot 앱을 실행시켜보자
일단 IntelliJ에서 Dockerfile(확장자 없음)을 루트 폴더에 만든다.
해당 코드를 Dockerfile에 추가
FROM openjdk:17-jdk-slim //자바버전
ADD /build/libs/*.jar app.jar //Gradble로 빌드해서 해당 위치에 생성됨을 표시
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] //앤드 포인트
(Docker는 설치되어 있어야한다.)
🐋 관리자 모드로 설정
sudo su -
🐋 여기서 잠깐!
java가 설치 되어 있어야 하므로 해당 명령어로 자바를 설치한다.
sudo apt update
sudo apt install openjdk-17-jdk
🐋 방금 깃에 올린 리파지토리를 클론한다.
git clone https://github.com/BE-Spring-Study/springboot3.2
명령어 ll
로 파일이 잘 있는지 확인
🐋 경로 변경
cd springboot3.2/
🐋 gradlew 설치 후 실행
sh gradlew //설치
sh gradlew build //실행
🐋 springboot3.2 폴더에 build
가 있는지 확인 후 접속
cd build
🐋 이후 또 libs
폴더로 접속 (최종적인 주소 ~/springboot3.2/build/libs)
cd libs
🐋 명령어 ll
을 실행하면 .jar
파일을 확인할 수 있다.
🐋 이후 명령어를 실행하면 springboot 앱을 실행할 수 있다.
java -jar springboot3-2-0.0.1-SNAPSHOT.jar
🐋 인스턴스의 보안 인바운드 규칙을 정의해준다. 기존 22번 포트만 열려있던 규칙에서 8080 포트도 추가해준다.
cd ..
두번 실행(프로젝트 루트폴더로 이동) > springboot3.2 폴더로 이동
🐋 Docker을 이용해서 빌드를 한다. 파일 뒤에 한 칸을 띄고
. 을 입력한다.
docker build -t springboot3.2 .
🐋 리눅스에서 온 요청을(8080 연결) Docker에 연결(8080에 연결)하는 옵션을 주고 실행한다.
docker run -p 8080:8080 springboot3.2
🐋 Docker을 통해 연결되는 모습 이후 해당 인스턴스 주소에 :8080을 입력하면 연결되는 모습을 볼 수 있다.