EC2에 Docker 로 배포하기 !
제일 처음해야할것은 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로 만드는게 좋을 것 같다.
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이 정상적으로 실행되는것을 확인할 수 있다.