본문 바로가기
Redis

[Redis] Docker Compose로 Redis + Spring Boot 띄우기 (AWS)

by jn4624 2024. 10. 26.
반응형

배포 환경의 인프라를 구성했으니 AWS EC2에서 Docker Compose로 Redis + Spring Boot를 한 번에 띄워봐야하지 않겠는가!

 

1. Dockerfile 만들기

EC2 내에서 사용할 Dockerfile을 생성한다.

로컬 환경에서 사용할 파일과 배포 환경에서 사용할 파일을 구분하기 위해 이번엔 Dockerfile-prod로 생성하자.

FROM openjdk:17-jdk

COPY build/libs/*SNAPSHOT.jar app.jar

# 배포 환경 profiles를 지정해줘야 하기 때문에 명령어가 추가되었다
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "/app.jar"]

 

2. compose.yml 파일 만들기

compose.yml 파일도 로컬 환경과 배포 환경을 구분하기 위해 compose-prod.yml로 생성하자.

services:
  api-server:
    build:
      # Dockerfile이 위치한 경로 특정
      context: .
      # Dockerfile을 임의로 지정하였기 때문에 파일명을 명시
      dockerfile: ./Dockerfile-prod
    ports:
      - 8080:8080
    depends_on:
      cache-server:
        condition: service_healthy
  cache-server:
    image: redis
    ports:
      - 6379:6379
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      retries: 10

 

3. Github Repository에 Push

프로젝트 내 변경 사항을 Github Repository에 올려야 EC2에서 내려 받을 수 있기 때문에 Repository에 변경 사항을 Push 한다.

 

4. EC2에서 Git Pull 받기

push한 설정 파일들을 EC2에 내려 받아 적용해야 하기 때문에 인스턴스에 접속해서 변경 사항을 Pull 받는다.

 

5. EC2에 Docker 설치

EC2에서 Docker를 실행시켜야 하기 때문에 Docker 설치를 진행한다.

 

Docker 설치

# EC2에 Docker 설치하는 명령어
sudo apt-get update && \
	sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \
	curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
	sudo apt-key fingerprint 0EBFCD88 && \
	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 -y docker-ce && \
	sudo usermod -aG docker ubuntu && \
	newgrp docker && \
	sudo curl -L "https://github.com/docker/compose/releases/download/2.27.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
	sudo chmod +x /usr/local/bin/docker-compose && \
	sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 

Docker 및 Docker compose 설치 확인

# Docker 버전 확인 명령어
docker -v

# Docker compose 버전 확인 명령어
docker compose version

 

6. 기존에 실행되고 있는 Redis 종료

# EC2에서 Redis 중지하는 명령어
sudo systemctl stop redis

# EC2에서 Redis 상태 확인하는 명령어
sudo systemctl status redis

 

7. Docker 컨테이너로 띄워보자!

Spring Boot 다시 빌드

# 테스트 생략하고 Spring Boot 빌드하는 명령어
./gradlew clean build -x test

 

Docker 컨테이너로 띄우기

# 배포 환경 파일을 명시해서 Docker 컨테이너로 띄우는 명령어
docker compose -f compose-prod.yml --build -d

 

잘 떴을까?

 

8. 마지막으로 API 확인해야지!

 

이것도 다행이 정상이군 😆

 

Reference.

https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-redis-%EC%9E%85%EB%AC%B8-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94

 

비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편) 강의 | JSCODE 박재성 - 인프런

JSCODE 박재성 | 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 'Redis 입문/실전 (조회 성능 최적화편)' 강의를 만들어봤습니다!, 🤬 에라이, 못 해먹겠네!비전공자로 개발

www.inflearn.com

 

반응형