Github Actions 로 AWS EC2 에서 Docker 실행

joona95·2024년 7월 1일

문제

JWT 리프레시 토큰 저장 및 블랙리스트 저장을 위해서 Redis를 활용하기로 했다.

Redis 실행을 위해 docker-compose.yml 파일을 작성하여 실행하도록 하려고 했다.

현재 Github Actions로 CI/CD를 진행하고 있어서 자동으로 docker, docker-compose가 있는지 확인 후 다운하고 Redis를 실행하고자 했다.

해결

  1. github actions의 workflow 내에서 docker-compose.yml 파일을 복사하도록 처리
    # docker-compose.yml Copy
    - name: Copy docker-compose
      run: cp docker-compose.yml ./deploy/
  1. start.sh 에서 docker, docker-compose 다운로드 여부 확인 후 없으면 다운로드하도록 처리 (amazon linux 2023 기준 - 다운로드 명령어가 다름)
# Installing docker engine if not exists
if ! type docker > /dev/null #docker를 깔아주는 코드, EC2 인스턴스에는 아무것도 없기 때문에 직접 깔아줘야 한다.
then
  echo "docker does not exist"
  echo "Start installing docker"
  sudo yum -y update
  sudo yum install -y docker
  sudo systemctl start docker
fi

# Installing docker-compose if not exists
if ! type docker-compose > /dev/null #docker-compose를 깔아주는 코드
then
  echo "docker-compose does not exist"
  echo "Start installing docker-compose"
  sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  sudo chmod +x /usr/local/bin/docker-compose
fi
  1. start.sh에서 docker 구동 여부를 확인하고 구동되지 않은 경우에는 실행하도록 처리
# docker 구동
DOCKER_PID=$(pgrep -f $PROJECT_ROOT/docker-compose.yml)
if [ -z $CURRENT_PID ]; then
  echo "start docker-compose up"
  sudo docker-compose -f $PROJECT_ROOT/docker-compose.yml up --build -d
fi

0개의 댓글