Docker를 사용해 Spring Boot ec2에 띄우기

유병수·2023년 4월 20일
0

1.프로젝트 루트경로에 dockerfile을 생성

gradle과 maven을 사용할 때 적는 방식이 다르다. 위의 방식은 gradle!
스프링부트 2.5 이상 부터는 jar 파일이 2개가 생긴다. plain.jar가 추가로 생성되기 때문에 build.gradle 안에 아래의 옵션의 추가해주자

plain.jar는 어플리케이션에 필요한 모든 의존성을 포함하지 않고 소스코드의 클래스 파일과 리소스 파일만을 포함하고 있다.

jar{
	enabled = false
}

그런다음 ./gradlew clean build로 jar 파일을 build해주자.

2. Docker iamge생성

2-1 docker login

docker에 이미지를 올리고 사용하려면 로그인을 해야한다. 계정이 없다면 가입!
터미널에 아래와 같이 치고 나면 비밀번호를 적으라고 하는데 비밀번호 까지 적으면 로그인 완료

도커 명령어 레퍼런스

명령어 옵션 같은 경우는 공식페이지 레퍼런스를 보면서, 써보면서 익히는게 제일 좋은거 같다.

$docker login -u username

2-2 iamge build

아까 만들어뒀던 jar 파일로 image를 build할 차례이다. docker hub에 push할꺼기 때문에 [docker hub id]/iamgename 으로 지정해주자.

build 할때 dockerfile의 경로를 입력해줘야하는데 불편하니 터미널로 프로젝트 루트경로(dockerfile 위치) 까지 이동해서 build를 해주자.

참고
만약 m1칩을 사용하고 있다면 amd기반 이고 ec2가 x86이기때문에 아래의 명령어를 사용해줘야하는거 같다.나중에 cicd를 할때는 로컬 pc에서 빌드하지않기 때문에 문제가 되지않았지만 한번 로컬에서 해보는 과정에서 겪은 문제.

$docker build -t [docker Hub ID]/[이미지명] . 

# m1
$docker build --platform linux/amd64 -t [docker Hub ID]/[이미지명] . 

위 그림처럼 빌드가 끝났다면 이미지가 정상적으로 등록되었는지 확인해보자

# image 목록
$docker images

3. docker image push

이미지가 생성된걸 확인했으니 이제 허브에 푸쉬를 할 차례이다.

$docekr push [docker Hub ID]/[이미지명]

docker desktop을 켜서 image 목록을 누르고나면 hub를 선택해서 확인할 수 있다.

4. ec2에서 Image 실행하기

ec2 서버를 올리고 접속한뒤 iamge를 pull 받는다. 막 ec2를 올렸다면 docekr를 설치하고 로그인까지 해주면 된다.

#도커 허브에 있는 image pull
sudo docker pull

# image 실행
# docker run -d -p [로컬 port]:[도커 port] [docker Hub ID]/[이미지명]
$sudo docker run -d -p 8080:8080 yubyeongsoo/pet_119_back

참고
아래와 같은 오류가 난다면 build 시에 옵션을 주자! 2-2 확인

#실행중인 도커 확인
$sudo docker ps

아래처럼 뜬다면 도커가 성공적으로 실행중이다.이제 접속을 해보자

지정한 포트번호로 실행이 잘되는것을 볼수있다.

0개의 댓글