새롭게 시작한 개인 프로젝트에 CI/CD를 적용해 보기로 결정 했다. 여러가지 툴이 있겠지만 간편하게 사용하기 위해 Github Actions를 사용하기로 결정했고, CI/CD를 적용하였다. AWS + Github Actions를 이용한 무중단 배포 서비스 구축에 관련된 포스트는 꽤 있지만, 한번에 전체적인 그림을 보여주는 포스트를 사실 발견하진 못했기에, 스스로 정리해보고자 한다. 들어가기 전에, 아래의 일련의 과정을 한번에 세팅 할 수 있다면 좋겠지만, 나의 경우 EC2에 이것 저것 설정하면서 다수의 에러를 만났다. 내가 만났던 큰 에러들을 가장 아래 TroubleShooting에 기술 해 놓았으니, 미리 참고해보면 좋을 것 같다. 시스템 아키텍쳐 이번 포스트에서 구현 할 내 프로젝트의 아케텍쳐는 다..
Docker
개인 프로젝트를 EC2에 배포하는 CI/CD를 구현 중에 있었다. 그런데 이상하게 npm install을 하면 계속 멈춰버리고 중간에 timeout으로 죽어버리는 현상이 발생했다. 어떻게 이 현상을 해결했는지 알아보자. 참고로 stackoverflow에서 사용해보라고 하는 아래 방법을 시도해 봤지만, 난 해결되지 않았다. removing package-lock.json npm config set registry http://registry.npmjs.org/ --global npm cache verify 문제 원인: 프리티어 사용으로 인한 메모리 부족 원인은 메모리 부족에 있었다. 현재 개인 프로젝트를 띄우는 용도였기에, 프리티어 지원이 가능한 .micro 인스턴스를 사용하고 있었다. 제공되는 RAM은 ..
개발편의를 위해 Docker를 이용하여 Mysql 컨테이너를 띄워 사용하고 있었다. EC2에 있는 Mysql 컨테이너의 백업 sql을 생성하는 방법을 간단히 정리해보자. 컨테이너에 띄워져있다는 사실 때문에 복잡하게 생각할 필요 없다. 아래처럼 호스트와 포트를 지정해서 container에 있는 mysql 데이터를 원하는 경로에 백업할 수 있다. //mysql container에서 3307로 port expose하고 있어서 -P로 지정해주었다. mysqldump -h 127.0.0.1 -u root -p -P 3307 [테이블명] > [path_you_want]/backup.sql 위 처럼 명령어를 입력하면, 패스워드를 입력하라는 안내가 나오고, 정확한 패스워드를 입력하면 원하는 경로에 backup.sql ..
docker-compose.yml 파일을 이용해서, backend 서버 컨테이너와 db 컨테이너를 연결하는 방법에 대해 정리해 보고자 합니다. 컨테이너 간 통신 방법 - bridge 설정 Docker 컨테이너 간 통신을 하기 위해서 각 컨테이너들은 하나의 network에 있어야 합니다. 기존에는 links를 이용해서 연결이 가능했지만, networks의 도입으로 곧 deprecated 되므로 networks를 사용합시다. (links will be deprecated) networks는 docker-compose 파일을 이용해 설정이 가능한데 그 방법은 아래와 같습니다. version: '3.8' services: frontend: container_name: habits_frontend # ... ne..