열심히 개발한 SpringBoot 프로젝트를 Docker 를 사용하여 EC2 배포 서버에 배포해보자!
Why Docker?
docker 를 사용하는 데에는 정말 다양한 이점이 있다. 이에 관해서 포스팅한 내용이 있다.
https://himodu-tech.tistory.com/12
직접 개발한 스프링부트 프로젝트를 도커를 통해 배포하기 위해선 다음과 같은 과정이 필요하다.

0. 로컬 환경에 Docker 를 설치한다. (잘 나와있는 자료들이 많아서 생략)
1. 프로젝트 내에 jar 실행파일을 만든다.
2. 프로젝트 내에 Dockerfile 을 만들어 Docker 가 해당 jar 파일을 찾을 수 있도록 한다.
3. 프로젝트에서 터미널을 열어 Docker 명령어를 통해 이미지를 build 한다.
4. build 한 이미지를 Docker Hub 에 공유한다.
5. 준비된 서버에서 Docker Hub 에 공유된 이미지를 다운(pull)받는다. (서버에는 도커가 설치되어야함)
6. 다운받은 이미지를 가지고 컨테이너를 실행한다.
과정이 조금 길다. 차례차례 살펴보도록 하자
1. 프로젝트 내에 jar 실행파일 만들기
jar 실행파일이란 java 애플리케이션 실행을 위한 모든 파일들을 압축해놓은 하나의 실행가능한 파일로써
흔히 '자르' 라고 부른다. (교수님들도 그렇게 부르시더라... '자~ㄹ' 파일이라고 부르면 좀 어색해보인다.)
jar 실행파일을 만드는 방법은 gradle 을 사용한다면 매우 간단하다.

먼저 인텔리제이 우측상단에 코끼리 모양 gradle 아이콘을 누른 다음 tasks -> build -> bootJar 를 선택

그럼 밑에 콘솔 창에서 실행결과를 확인할 수 있고

프로젝트 내에 build/lib 하위 경로에 실행파일이 생성된다.
2. 프로젝트 내 Dockerfile 생성
프로젝트 최상단에 새로운 파일을 만들고 이름을 'Dockerfile' 이라고 지어준다. 토씨 하나도 틀려선 안된다.
(최상단이 아니어도 좋지만, 이러한 경우 build 시에 경로를 따로 명시해줘야하기 때문에 귀찮다.)
Dockerfile 의 내용은 아래와 같다.
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
Dockerfile 이 하는 일은 Docker 가 이미지를 빌드할 때의 정보를 제공해주는 것이다.
위에서 부터
만들 이미지의 기초가 될 java 이미지를 선택하고, (버전을 꼭 맞춰줘야한다.)
jar 파일의 위치를 매개변수로 저장하고
app.jar 라는 이름의 jar 파일로 이를 복사한 다음
'java -jar /app.jar' 라는 명령어를 해당 이미지의 ENTRY POINT 로 설정한다.
ENTRY POINT란 이 이미지를 바탕으로 컨테이너를 실행하는 그 순간 초기에 실행할 명령어를 의미한다.
3. 터미널을 열어 docker 명령어를 통해 이미지를 빌드한다.
docker build -t {도커허브 이름}/{이미지 이름} .
프로젝트 최상단 경로에서 터미널을 열고, 위와 같은 명령어를 입력한다.
여기서 중요한 것은!
이미지의 이름을 정해줄 때 DockerHub에서 사용하는 이름을 앞에, 해당 이미지의 이름을 뒤에 적어줘야 한다는 것이다.
해당 이미지의 이름은 얼마든지 겹칠 수 있으니 이를 식별하기 위해서 앞에 자신의 DockerHub 이름을 붙여주는것이다.
그리고 중요한 것은 마지막에 '.' 이걸 꼭 찍어주자. 이 점이 의미하는 것은 해석할 Dockerfile 이 있는 위치이다.
우리는 방금 최상단에 Dockerfile 을 만들었기 때문에 현재 위치('.')에서 찾을 수 있지만, 만약 다른 곳에 있다면 여기에 도커파일이 있는 파일경로를 적어줘야한다.
4. build 한 이미지 DockerHub에 업로드
Docker를 설치했다면, DockerDesktop 또한 설치되었을 것이다. GUI 로써 도커를 훨씬 편히 이용할 수 있으니 사용하는 것을 추천한다. 그리고 DockerHub 에 꼭 로그인 해주자.

하단에 'Not connected to Hub' 이라고 뜬다면

우측상단에 Sign In 버튼을 눌러 로그인할 수 있다. 소셜 로그인을 지원하기 때문에 어렵지 않을 것이다.

하여튼 성공적으로 이미지가 빌드됐다면, DockerDesktop에 images/Local에 이미지가 보일 것이다.

배포할 이미지의 좌측에 세로 점 3개 버튼을 누르고 'push to Hub' 를 선택하면, Docker Hub에 업로드 되며, DockerDesktop 에 'images/Hub ' 에서 확인할 수 있다.
5 ~ 6 과정은
서버에 도커를 설치하고, Hub에 올라간 이미지를 다운받아 그대로 컨테이너를 실행하는 과정이고
따로 포스팅한 내용이 있다. 아래 링크를 참고하면 된다.
https://himodu-tech.tistory.com/10
아래 영상은 전 과정을 영상으로 기록한 내용이다. (영상이 안뜬다면? = https://www.youtube.com/watch?v=X6Fb6pT11eo)
'인프라 > Docker' 카테고리의 다른 글
Docker 란? (0) | 2024.07.25 |
---|---|
EC2 인스턴스에 Docker 설치하기 (0) | 2024.07.22 |