📌 고정 게시글

📢 공지합니다

이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.

최코딩의 개발

도커로 AWS EC2 스프링 배포하기 본문

AWS

도커로 AWS EC2 스프링 배포하기

seung_ho_choi.s 2024. 11. 28. 20:15
728x90

개요

이번 시간에는 드디어 드디어 고대하던 스프링 배포시간이 돌아왔다.

요새 너무 바빠서 블로그를 1달에 2번.... 올려서 슬프다.

이제 시작을 해보겠다.

 

준비물

AWS 지식과 Docker DeskTop을 깔아주시고 계정도 만들어주세요!

 

도커

 

다음과 같이 bootJar을 눌러줍니다!

 

그럼 위 사진과 같이 jar 파일이 생성된것을 볼 수 있습니다. 

FROM openjdk:17

# 빌드된 JAR 파일의 경로 지정
ARG JAR_FILE=build/libs/*.jar

# JAR 파일을 컨테이너로 복사
COPY ${JAR_FILE} app.jar

# 애플리케이션 실행 명령어
ENTRYPOINT ["java", "-jar", "/app.jar"]

 

그 후 DockerFile을 만들어서 jar 파일 위치에 맞게 작성해주세요!!

참고로 DockerFile 위치는 루트경로 아래에 바로 있어야 됩니다!

 

그 후 Docker DeskTop을 실행시켜줍시다! 이거 실행안시키면 도커가 작동이 안됩니다!

 

그 다음 터미널에 아래 코드를 작성해야됩니다. 

docker build -t {도커 허브 ID}/{레포지토리 이름:버전} {Dockerfile 경로}

 

이런 형식으로 작성해야됩니다.

 

==> 그래서 저는 docker build -t chltmdgh522/pirohomework:1.0.0 .   이렇게 작성했습니다. 

 

 

정상적으로 작동하면 완료됐다고 뜹니다.

 

그런 다음 도커 허브로 들어갑시다! 

 

여기서 위 사진과 같이 들어가고 create a repository를 누릅시다. 

 

 

여기서 레포지토리 이름 작성하고 코드에 민감한 내용이 있으면 private로 변경해서 생성해줍니다.

 

저는 기존 pirohomework 레포지토리가 있어서 그걸로 진행하겠습니다. 

 

그럼 다시 터미널로 돌아와서 이번에는 push를 해야됩니다.

참고로 이미지 이름은 반드시 {도커 허브 ID}/{레포지토리 이름: 버전} 이어야 됩니다!!!!

 

도커 허브 ID는 위 사진처럼 chltmdgh522 입니다.

 

그리고 터미널에 다음과 같이 코드를 작성하면 push 완료입니다!

 

이제 AWS EC2 터미널 환경으로 가줍니다. (이전에 인스턴스는 미리 다 준비 하셔야 합니다.)

 

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get install docker-ce docker-ce-cli containerd.io

 

EC2에서 위 명령어들을 복붙해서 실행시킵시다. 

 

sudo systemctl status docker

 

그리고 도커 상태를 확인해줍니다! 정상적으로 설치가 다 됐습니다. 이젠 도커를 pull로 해서 받아야 겠죠??

 

참고로 user가 root가 아니면

sudo usermod -aG docker $USER
sudo service docker restart
sudo systemctl restart docker
sudo chown root:docker /var/run/docker.sock

 

다음과 같이 명령어를 실행해주고 다시 터미널 나갔다가 다시 들어와주세요!

 

docker login

 

그리고 docker login 명령어 작성해서 login 해줍니다.

 

docker pull {이미지 이름}
docker image ls

 

push와 동일하게 pull을 해주시고 image 상태를 확인하기 위해 docker image ls를 눌러서 확인합시다.

 

이제 준비가 다 됐습니다!!!

 

docker run -i -t -p 8080:8080 {이미지 이름} &

 

위와 같이 이젠 서버를 실행해줍니다.

 

근데 로그를 보고 싶으시면 

docker ps
docker logs -f <해당 도커 이미지 ID>

 

위와 같이 명령어를 입력하면 서버 로그를 볼 수 있습니다!!

 

근데 이렇게 하면 문제점이 있습니다... 서버가 계속 팅깁니다.....

 

SWAP 설정

따라서 swap 설정을 해주셔야 됩니다.

먼저 free -h로 swap 이 있는지 확인해줍시다. 만약 0이 뜨면 아래 명령어들을 붙여서 실행해주세요!

근데 아마 swap 다들 없으실 거에요!

sudo fallocate -l 2G /swapfile

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

sudo chmod 600 /swapfile

sudo mkswap /swapfile
sudo swapon /swapfile

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

 

그리고 이젠 다시 서버를 실행할떄 

docker run -i -t -p 8080:8080 \
  --cpus="1.0" \
  --memory="512m" \
  --memory-swap="1g" \
  --restart=always \
  chltmdgh522/pirohomework:1.0.0 &

 

이렇게 해서 다시 실행하면 이젠 서버가 안팅깁니다!!

 

 

다음 시간에는 Nginx 및 DB 설정법을 알려드리겠습니다. 

728x90

'AWS' 카테고리의 다른 글

AWS & 깃허브 Continuous Deployment(CD) 설정  (0) 2024.08.19
AWS Route53을 이용하여 도메인 연결하기  (0) 2024.08.18
AWS EC2 SSH 원격 접속  (0) 2024.08.12