이번 포스팅에서는 Spring Boot + Docker + EC2
를 활용하여 기존 만들었던 블로그 프로젝트를 배포해 볼 것이다!
(출처 🐳 CLASS101)
대략적인 과정은 위 사진처럼 진행될 예정이다.
먼저 나는 윈도우 유저이기 때문에 WSL2를 설치해야 하는데, 그러기 위해서는 윈도우 터미널을 먼저 설치해야 한다. Windows Terminal을 설치한 뒤, 관리자 권한으로 실행한다.
그리고 순서대로 명령어를 입력해 준다.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
그리고 컴퓨터를 재부팅해 준다! 이제 x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지를 다운로드 후 설치해야 한다.
설치가 완료되었다면 다시 Powershell로 돌아가서 아래 명령어를 입력한다.
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
이제 Microsoft Store에서 Ubuntu를 설치한다.
다운받고 실행하면 새 리눅스 배포에 대한 사용자 계정 및 암호를 만들어야 한다. 계정 및 비밀번호를 실행해 주고, 패키지 관리자를 최신 버전으로 업데이트해 준다. (시간이 꽤나 많이 걸린다..!)
sudo apt update && sudo apt upgrade
짜잔! 이렇게 하면 윈도우에서도 터미널로 개발을 할 수 있게 된다! 😉
Docker Desktop 사이트에 들어가 윈도우용 도커 데스크탑을 설치해 준다.
Ubuntu 터미널을 실행하고 아래 과정을 따른다.
sudo apt update && sudo apt upgrade
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
sudo apt update && sudo apt upgrade
입력 후 OK가 출력되면 완료된 것이다!
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
docker -v
sudo systemctl enable docker
sudo service docker start
service docker status
이렇게 했을 때 방대한 코드가 출력된다면.. 도커가 정상적으로 실행되고 있는 것이다!
이제 스프링 부트로 향하자. 스프링 부트 프로젝트 루트에 Dockerfile
파일을 생성하고 아래와 같이 작성해 주자.
FROM amazoncorretto:17
COPY build/libs/*.jar spring-base.jar
ENTRYPOINT ["java", "-jar", "/spring-base.jar"]
powershell에서 해당 명령어를 입력해 도커 이미지를 만든다.
cd /프로젝트경로/프로젝트경로 <- Dockerfile이 있는 경로까지 이동
docker build -t 계정명/프로젝트명 .
docker images
도커 이미지를 만들고 마지막 명령어를 입력하면 생성된 도커 이미지를 확인할 수 있다.
생성된 이미지로 컨테이너를 실행해 보자. 포트 번호가 2개인 이유는 Host Port와 Container Port를 연결하기 위함이다.
docker run -d -p 8080:8080 ansoohyeon/blog-project
docker ps
명령어로 실행 중인 컨테이너를 확인할 수 있다.
이제 프로젝트 주소로 접속해 보면 페이지가 정상적으로 배포된 것을 볼 수 있다!
도커 허브 사이트에서 먼저 회원 가입을 한 뒤 powershell에서 로그인을 진행한다.
docker login
그리고 도커 이미지를 push한다.
docker push ansoohyeon/blog-project
완료한 뒤 도커 허브에 들어가 보면...
내가 방금 푸시한 도커 이미지를 볼 수 있다! (신기😎)
이제 우분투 터미널로 가서 아래 명령어를 입력해 도커 허브의 이미지를 우분투에 풀한다.
sudo systemctl start docker
sudo docker pull devfoxstar/spring-base
이미지를 풀받았으니 이제 실행해 보자.
sudo docker run -d -p 8080:8080 ansoohyeon/blog-project
그러면 배포 끝!
도커를 사용해 본 소감은,
정말 신세계다! 도커를 말로만 들었을 때는 복잡하고 막막한 느낌이었는데, 실제로 차근차근 구현해 보니 굉장히 편리한 것 같다. 이렇게 해 보니 기존 포스팅에서 war 파일을 사용해서 배포했던 것이 얼마나 어렵고 복잡한 일이었는지.... 🙄