개인적으로 진행한 사이드 프로젝트를 위 방식과 같이 배포해보려고 한다.
과정을 간단히 요약해보자면
1️⃣ spring boot 프로젝트를 docker image로 만든다.
2️⃣ docker image를 docker hub에 push 한다.
3️⃣ EC2에서 docker hub에 존재하는 docker image를 pull 받아온다.
4️⃣ docker image 파일을 실행한다.
사전에 해야할 것
AWS EC2 인스턴스 생성하기 go go
docker hub 가입하기 gogo
1️⃣ docker image 만들기
FROM openjdk:11-jdk
RUN apt-get update && apt-get -y install sudo
ARG JAR_FILE="build/libs/*.jar"
COPY ${JAR_FILE} app.jar
ENV PROFILE dev
ENTRYPOINT ["java", "-Dspring.profiles.active=${PROFILE}", "-jar","/app.jar"]
배포용: dev / 개발용: local 로 따로 두어 개발했기 때문에, 배포용 dev을 profile로 설정해주는 코드가 필요했다.
./gradlew build -x test
다음 명령어를 실행하면 jar 파일이 /build/libs 아래 생긴다.
2️⃣ docker hub에 image push
docker hub 로그인 후 레포지토리를 생성해준다.
다음 명령어로 docker image를 생성한다. 필자의 경우 M1을 사용하고 있었기 때문에 --platform linux/amd64 .를 붙여주었다.
docker build --build-arg DEPENDENCY=build/dependency -t 도커허브id/레포지토리이름 --platform linux/amd64 .
docker hub로 푸시하기 전에 로그인 여부를 확인한다. 로그인이 안되어있다면 해주자
docker login
그리고 push
docker push 도커id/레포지토리이름
성공적으로 push 되었다면 아래와 같이 repository에 tag가 하나 생기게 된다.
3️⃣ EC2에서 docker image를 pull 받기
ec2에 접속한 후
도커 설치
$ sudo yum install docker
도커 실행
$ sudo systemctl start docker
그리고 로컬에서 docker hub에 push한 이미지를 pull 받아준다.
sudo docker pull 도커id/레포지토리이름
4️⃣ EC2에서 docker image 실행
image를 실행해준다.
sudo docker run -i -t -p 5000:8080 도커id/레포지토리이름
이 명령어는 Docker 이미지를 실행하고 호스트의 5000번 포트를 통해 해당 컨테이너의 8080번 포트에 접근할 수 있게 해준다.
EC2 퍼블릭IP주소에 5000번 포트로 접속해보자
성고옹...👊🏻
'Server' 카테고리의 다른 글
부하 테스트를 해보자 ! - jMeter 설치부터 테스트까지 (1) | 2023.09.13 |
---|---|
부하 테스트를 해보자 ! - nGrinder (0) | 2023.09.12 |
Docker로 MariaDB 실행하고 터미널로 접속하기 (1) | 2023.05.01 |
[WEB] 웹 기초 (0) | 2022.05.04 |
nohup 설정하기 (0) | 2022.01.29 |