AWS

EC2에 Docker 로 배포하기 !

chbong 2024. 8. 25. 17:20

제일 처음해야할것은 Intellij에서 할일이다.

project의 root 위치에서 Dockerfile 이라는 파일을 생성해준다.

 

Dockerfile 의 소스코드는 아래와 같은데 FROM 에서는 jdk의 버전을 말한다.

ENV는 환경변수인데 profiles 을 어떤걸 쓸껀가?에 대해서이다.

필자는 prod를 default로 배포하였다.

ADD 는 실제 .jar파일이 있는 위치이다.

ENTRYPOINT는 컨테이너가 생성되고 최초로 실행할 때 수행되는 명령어를 지정한다.

 

FROM openjdk:17-alpine

ENV SPRING_PROFILES_ACTIVE=prod

ADD /build/libs/*.jar app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

 

위와 같이 세팅이 완료되었다면 Gradle 에 Tasks -> build -> bootJar를 실행시켜준다.

 

bootJar가 성공적으로 실행되었다면 , build/libs 에 .jar파일이 생겼을 것이다.

 

이제 jar파일을 image파일로 만들어 보자.

IntelliJ terminal에서 아래의 명령어를 실행시켜준다.

 

docker build -t dockerRepository명칭:버전 .

docker build -t changhee/test:1.0.0 .

 

위와 같이 실행한뒤 정상적으로 이미지파일이 생겼는지 확인하려면

 

docker image ls

명령어를 실행시켜서 확인한다.

 

이제 Docker Repository를 만들차례이다.

yml 파일등과 같은 개인설정파일도 포함되어있을 jar파일이기에 private로 만드는게 좋을 것 같다.

http://hub.docker.com

 

Docker Hub Container Image Library | App Containerization

Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

hub.docker.com

도커 허브에서 Repositories 에 create Repositroy를 선택하여준다.

 

 

다 생성이 되었다면 해당 Repository가 생성되었을 것이다.

다시 IntelliJ terminal로 돌아와서 

docker login

 

위의 명령어로 아이디와 비밀번호를 통해 도커에 로그인을 해준다.

 

이제 docker에 만든 image를 push할 차례이다 !

docker push 저장소이름:앞전에만든 버전

docker push changhee/test:1.0.0

이런식으로 image를 push하면 Docker hub홈페이지에 내가올린 image가 보일 것이다.

 

EC2 환경에 가서 

docker login을 해준다. 위의 명령어와 동일하기에 명령어 생략

 

Dockerhub에서 image Pull하기

docker pull {이미지 이름}
docker image ls

 

docker image ls 를 통해 정상적으로 잘 가져와졌나 확인까지 완료하였으면, 이제 docker image로 가져온 jar파일을 실행 시켜주면 서버가 뜬다 !

 

docker run -i -t -p 8080:8080 {이미지 이름}

 

docker run을 통하여 서버를 실행하면 spring이 정상적으로 실행되는것을 확인할 수 있다.