우선 CodeDeploy 환경설정을 해보자!
IAM 역할 추가
배포를 위한 (AWSCodeDeployRole 정책이 포함된) CodeDeploy IAM 역할을 만들어놓는다. 아니면 그냥 쭉 만들고, 나중에 AWSCodeDeployFullAccess 정책을 직접 연결해줘도 된다.
CodeDeploy Agent 설치
sudo apt update
sudo apt install ruby-full
sudo apt install wget
cd /home/ubuntu
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
Bash
복사
•
실행확인
sudo service codedeploy-agent status
Bash
복사
Java 설치
아래 명령어로 Java 17 버전을 설치한다.
sudo apt update
sudo apt install openjdk-17-jdk
Bash
복사
Code Deploy 세팅
먼저 애플리케이션을 생성해준다.
다음은 배포 그룹을 만들어줘야한다.
에이전트 구성은 한 번만, 로그 밸런서도 따로 넣지 않았다. 배포 방식도 현재 인스턴스를 바로 업데이트 하는걸로 했다. 무중단 배포는 나중에 구현하는걸로.. ㅎㅎ
EC2에 Docker 설치
Ubuntu Linux 환경에서 작업을 수행한다.
Ubuntu에 Docker 설치
•
패키지 업데이트 및 설치 준비
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
Bash
복사
•
패키지 보안을 위한 Docker GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Bash
복사
•
apt에 Docker 공식 패키지 저장소 추가
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Bash
복사
•
Docker 설치
sudo apt update
sudo apt install -y docker-ce
Bash
복사
•
Docker 서비스 시작 및 권한 설정
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER # 현재 사용자에 대해 Docker 권한 부여
Bash
복사
성공적으로 도커 설치를 완료했다.
이제 gradle로 빌드한 Spring Boot 애플리케이션을 Docker에 배포하기위해, 우선 .jar 파일을 생성해야한다.
./gradlew bootJar
Bash
복사
이후 Dockerfile을 작성해준다.
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY build/libs/app.jar app.jar
COPY src/main/resources/application.yaml /app/config/application.yaml
RUN mkdir /logs && chmod 755 /logs
VOLUME /logs
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/app.jar", "--spring.config.location=file:/app/config/application.yaml"]
Docker
복사
작성한 Dockerfile을 기반으로 Docker 이미지를 빌드한다.
docker build -t my-spring-boot-app .
Bash
복사
이후 컨테이너를 실행해보면,
docker run -p 8080:8080 my-spring-boot-app
Bash
복사
이미지 실행이 잘되는걸 확인할 수 있다!
이제 배포 자동화 파이프라인을 구성해보자.