티스토리 뷰
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 이름 나중에 써요~!
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.
해결 방법 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
'👩🏻💻개발공부 > AWS' 카테고리의 다른 글
SSH 비밀번호 오류 해결 (Permission denied) (6) | 2024.04.08 |
---|---|
[CI/CD] GitHub Actions, Docker, EC2, Spring Boot 무중단 배포 시스템 만들기 1 (0) | 2024.03.28 |
Java Spring Boot EC2에 배포하기 (0) | 2024.03.23 |
[Nginx] NodeJS, React 서버 배포하기 (0) | 2023.07.24 |
데이터베이스(MariaDB,MySQL) 서버에 올려서 공용으로 사용하기 (0) | 2023.07.19 |
- Total
- Today
- Yesterday
- 스페인
- googleapis
- 혼공
- 리눅스
- 운영체제
- Linux
- 백준
- MySQL
- 공룡책
- 혼공학습단
- C++
- 혼공단 SQL
- nodejs
- JavaScript
- 혼공단
- Signal
- Process
- 교환학생
- 스페인 교환학생
- AWS
- JS
- 프로젝트
- 자바스크립트
- SQL
- 개발일지
- 백엔드 개발
- 개발
- 해커톤
- 깃 예제
- 혼공단 9기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |