TIL.18 | AWS EC2 배포 설정 - docker

원용현·2024년 5월 10일
0

TIL

목록 보기
18/21

이전에 포스팅 했던 AWS 배포와 연관되어 버전 업그레이드와 동시에 달라진 것들이 있어 함께 글에 적으려 한다.

이 글은 EC2 배포를 위해 하는 것들에 대한 포스팅으로 그 외의 로드밸런서 등의 설정은 설명하지 않는다.

1. EC2 생성

EC2를 만들 때 OS를 아마존 리눅스를 선택하면 프리티어가 기본으로 설정되어 있어 해당 버전인 Amazon Linux 2023 AMI로 EC2를 생성하는데 해당 EC2는 docker가 활성화 되지 않기 때문에 꼭 그 아래의 Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type으로 시작한다.

2. EC2 코드 작성

  1. nvm(노드 버전 관리자)을 설치한다.
  1. nvm을 활성화한다.
  • . ~/.nvm/nvm.sh
  1. node.js의 최신버전을 설치한다.
  • nvm install node
  • 간혹 설치가 되지 않는 경우가 있는데 버전이 맞지 않아서 설치가 되지 않는 경우이므로 node의 버전을 낮추어 설치한다.
  • nvm ls-remote 명령어를 통해 설치 가능한 버전을 확인하고 다운그레이드하여 설치한다. 설치가 되지 않는다면 버전을 더 낮추면서 시도한다.
  • 아래와 같은 방식으로 특정 버전을 설치할 수 있다.
    nvm install --lts
    nvm install 16.20.2
  1. yarn을 설치한다.
    npm install -g yarn
  • 원래는 sudo npm install -g yarn 명령어를 통해서 설치했지만 sudo를 사용하면 오류가 뜨는데 sudo를 제거하면 정상적으로 설치된다.
  1. git을 설치한다.
  • sudo yum install git
  1. git 저장소를 clone한다.
  • git clone 'git주소'
  • 저장소가 public이 아니라면 username과 git token을 입력하여 clone을 받는다.
  1. clone한 저장소로 이동하여 docker를 설치한다.
  • cd '경로'
  • sudo yum install docker
  1. 아래의 명령어를 순서대로 입력하여 docker-compose를 설치한다.
  1. docker를 활성화한다.
  • sudo amazon-linux-extras install docker
  • sudo service docker start
  • sudo usermod -a -G docker ec2-user
  1. 콘솔을 종료한 후에 재접속한다.
    종료 후 재접속을 해야 docker가 활성화됨.
  1. 가상메모리를 할당한다.
  • 해당 과정은 docker로 프로젝트를 build하는 과정에서 container와 image를 만들 때 램이 부족할 경우에 수행한다. 프리티어의 경우에는 메모리가 1GB로 작기 때문에 저장공간을 가상 메모리로 할당하여 부족한 메모리를 보충한다.
  • 스왑 파일 생성
    sudo fallocate -l 2G /swapfile
  • 스왑 파일 권한 할당
    sudo chmod 600 /swapfile
  • 리눅스 스왑 영역 설정
    sudo mkswap /swapfile
  • 스왑 영역 활성화
    sudo swapon /swapfile
  • 여기까지 진행했다면 당장의 가상 메모리는 활성화 되지만 다음 접속 시에는 메모리가 활성화 되지 않는다. 따라서 시작할 때 자동으로 가상 메모리가 할당되도록 설정한다.
  • 부팅 시 스왑 파일 활성화를 위해 편집기 열기
    sudo vi /etc/fstab
  • 파일의 끝에 아래의 코드 작성 후 저장
    /swapfile swap swap defaults 0 0
  1. 프로젝트 경로로 이동
  • cd '경로'
  1. build를 진행
  • docker-compose build
  1. 백그라운드에서 만든 docker image를 실행
  • docker-compose up -d

3. git 재배포 시 해야할 것

코드를 pull 받아와서 재배포 해야할 경우에 해당 코드로 다시 build를 진행해야하는데 프리티어를 사용하고 있기 때문에 이미 build한 것들을 삭제해 공간을 확보해야한다. docker-compose build를 통해 생성된 container와 image를 삭제한다.

이것을 위해서 해야할 일에는 다음과 같은 것들이 있다.

  1. docker 종료
  • docker-compose stop
  1. docker container 삭제
  • docker ps -a 명령어를 통해 docker container의 id값을 확인한다.
  • docker rm 'container id'로 container를 삭제한다.
  1. docker image 삭제
  • docker images 명령어를 통해 docker image의 id값을 확인한다.
  • docker rmi 'image id'로 image를 삭제한다.
  1. 삭제된 container와 image를 비워 공간을 확보
  • docker system prune -> y

이상으로 EC2 배포와 재배포 시 해야할 것들에 대해 알아보았고 다시 build를 해서 docker로 배포하였다면 cloudfront의 무효화를 통해서 서버에 저장되어있는 값을 날려주는 것을 잊지 않도록 한다.

0개의 댓글