본문 바로가기

DataBase/Redis

[Redis] EC2에서 Docker Compose 이용해 Redis, Spring Boot 띄워보기

 

1. EC2 내에서 사용할 Dockerfile, Docker compose 파일 만들기

Dockerfile-prod

FROM openjdk:17-jdk

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

ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "/app.jar"]

 

compose-prod.yml

services:
  api-server:
    build: 
      context: .
      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

 

2. 로컬에서 구현한 내용을 Github에 푸시

$ git commit -m "{커밋 메시지}"
$ git push

 

3. EC2에서 git pull 받기

$ cd {프로젝트 경로}
$ git pull origin main

 

4. 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 -v # Docker 버전 확인
$ docker compose version # Docker Compose 버전 확인

 

5. 기존에 실행되고 있는 Redis, Spring Boot 종료하기

# Redis 중지
$ sudo systemctl stop redis
$ sudo systemctl status redis # 잘 종료됐는 지 확인

# Spring Boot 종료
$ sudo lsof -i:8080 # 8080번 포트 실행되고 있는 프로세스 확인
$ kill {Spring Boot의 PID} # 프로세스 종료
$ sudo lsof -i:8080 # 잘 종료됐는 지 확인

 

6. Docker 컨테이너로 띄워보기

$ ./gradlew clean build -x test
$ docker compose -f compose-prod.yml up --build -d 

$ docker ps # 잘 띄워졌는 지 확인
$ docker compose logs -f # 실시간 로그 확인하기

 

7. Postman으로 테스트