티스토리 뷰

728x90

Docker를 활용해서 EC2에 간단하게 배포해보겠습니당!

Docker 활용하니까 진짜 편하더라구요..! 사전 준비물은 EC2 인스턴스와 spring boot 프로젝트 파일입니당~


순서

1. DockerHub 회원가입하기 & repository 만들기

2. 본인 노트북 (Mac)에 Docker 다운로드하기 & 로그인

3. EC2에 Docker 다운로드하기 & 로그인

4. Spring boot에 Docker 파일 생성

5. 본인 노트북에서 Gradle 빌드하고 Docker Image 만들어서 push 하기

6. EC2에서 Docker pull 받기

 


1. DockerHub 회원가입하기 & repository 만들기

docker hub 홈페이지 들어가서 회원가입 하고 repository 만들면 됩니다!

Username이랑 Repository 이름 나중에 써요~!

https://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


2. 본인 노트북 (Mac)에 Docker 다운로드하기 & 로그인

여기에서 도커 데스크탑 본인 노트북에 맞게 다운로드 받으시면 됩니다~!

https://www.docker.com/products/docker-desktop/

 

Docker Desktop: The #1 Containerization Tool for Developers | Docker

Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.

www.docker.com

 

터미널에서 도커 설치 확인 및 로그인하기

docker --version
# docker hub 계정 기준
docker login

3. EC2에 Docker 다운로드하기 & 로그인

1. 업데이트

sudo apt update
sudo apt-get update
sudo apt-get upgrade

 

2. https관련 패키지 설치

sudo apt install apt-transport-https ca-certificates curl software-properties-common

 

3. docker repository 접근을 위한 gpg 키 설정

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

4. docker repository 등록

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

 

5. 다시 업데이트

sudo apt update
sudo apt-get update
sudo apt-get upgrade

 

7. 도커 설치

sudo apt install docker-ce

 

8. 설치 확인

docker --version

 

9. 도커 로그인

docker login

4. Spring boot에 Docker 파일 생성

1. gradlew 빌드하기

./gradlew build

 

2. 프로젝트 내부에 Dockerfile 만들기

빌드 후에 ./build/libs 안에 있는 jar파일을 바탕으로 docker 이미지를 만들겁니다.

도커 이미지 만드는 Dockerfile은 다음과 같이 작성합니다.

 

<설명>

1. java 17버전 사용

2. ./build/libs 폴더 안에 있는 gamegoo-0.0.1-SNAPSHOT.jar 파일 사용해서 이미지 빌드

3. JAR_FILE을 gamegoo.jar 파일에 복사

4. jar 파일 실행 명령 (여기서 -Dspring.profiles.active=prod 옵션은 application.yml을 개발 환경에서 따로 분리한 것)

 

FROM openjdk:17-alpine

ARG JAR_FILE=/build/libs/[본인 jar 파일]

COPY ${JAR_FILE} [본인이 원하는 이름]

ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod", "[COPY명령어에 썼던 이름]"]

예시


5. 본인 노트북에서 Gradle 빌드하고 Docker Image 만들어서 push 하기

1. 도커 이미지용 gradle 빌드하기

./gradlew clean build -x test

 

2. 도커 이미지 빌드

이때, docker login할 때 사용했던 username과 명령어의 username이 다르면 에러 발생

sudo docker build --build-arg DEPENDENCY=build/dependency -t [본인 Docker Hub Username]/[Repository 이름] --platform linux/amd64 .

예시

 

3. Docker에 push하기

 sudo docker push -a [본인 Docker Hub Username]/[Repository 이름]

예시

 

 

## 해당 단계 진행 중 발생했던 에러 ## 

에러 메세지

 

해결 방법 1. 

https://velog.io/@eunsilson/Docker-Docker-Hub-push-%EC%8B%A4%ED%8C%A8-requested-access-to-the-resource-is-denied

 

해결 방법 2.

build 옵션으로 -a 붙이기

sudo 붙이기


6. EC2에서 Docker pull 받기

백그라운드에서도 배포가 진행되도록 하고 싶으시면 -d  옵션 추가하세요!!!

sudo docker run -p 8080:8080 [본인 Docker Hub Username]/[Repository 이름]

 


참고 : https://9keyyyy.tistory.com/39

참고 2 : https://everydayyy.tistory.com/121

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함