프로젝트 회고

프로젝트2

김영재0412 2022. 6. 15. 10:59

프로젝트2 

.sh 스크립트로 자동화 하기

 

init.sh

.sh에 명령어를 넣으면 알아서 순서대로 실행을 해준다.

redoc 명령어는 openapi.yml 파일을 index.html로 바꿔주는 명령어이고 scp는 로컬에서 원격으로 파일을 옮기는 명령어이다.

 

옮기는 곳은 ec2이며 변환한 index.html과 아파치를 돌릴 Dockerfile과 ec2 내에서 실행시킬 init2.sh파일을 옮겼다.

 

그 후 ssh -i 명령어로 ec2 내로 연결한 다음 ""을 붙이고 명령어를 해줘야 ec2안에서 실행이 된다. 

755로 모드를 바꿔주고 init2.sh를 실행 시켜준다.

init2.sh

그 후 업데이트를 한 후 로컬에서 원격으로 옮긴 폴더로 들어가 빌드를 한 후 도커를 컨테이너로 돌리면 프론트가 돌아가게된다.

 

 

 

 

 

다음은 ecs로 프론트, 백, 데이터베이스를 돌리는 프로젝트였다.

먼저 fastify generate로 새로운 프로젝트를 만든다. 그 후 npm i로 의존성 설치를 한 후 해당 api를 routes 폴더에 넣는다.

 

그리고 DB랑 서버를 이어줘야하기때문에 구글에 fastify mongo 깃허브에 들어가서 플러그인 폴더에 mongo.js를 만들고 따라하면 연결할 수 있다.

 

 

또 그냥 하면 cors 오류도 나기 때문에 fastify cors도 검색해 깃허브를 보고 따라하고 플러그인 폴더에 cors.js를 채워주면된다.

 

그 후 서버를 빌드할 도커파일을 만든다.

그 후 배포자동화를 위해 깃허브액션에서 ecs를 검색하고 아직 ecs를 만들지 못 했으니 ecr만 만든 뒤 해당 값을 넣고 푸쉬하면 ecr까지만 배포가 되고 오류가 난다. 그리고 배포된 ecr url을 가지고 ecs를 만든 뒤 로드밸런서 또한 만들어서 대상그룹은 네트워크로 하고 리스너는 80 대상그룹 3000 ecs 매핑도 3000으로 한 후 만들면 연결이 된다. 주의해야할점은 .env 처리한 파일은 깃허브에 못 올라가 정보가 없어서 컨테이너 만들 때 직접 넣어주고 task-definition.json 파일은 작업 정의를 만들면 json 버튼이 있는데 그걸 복사해 .aws폴더를 만든 후 넣으면 된다.

 

그럼 자동화가 되어 푸쉬하면 알아서 ecs에서 돌아간다. 같은 방법으로 몽고도 ecs에서 돌릴 수 있다. mongo는 docker.io/mongo:latest를 이미지 url로 하면 알아서 dockerhub에서 받아온다. 도커허브는 네트워크 로드밸런서로 만들어 몽고디비 포트번호인 27017로 다 설정하고 만들면 실행이 잘 되는 걸 확인할 수 있다. 주의해야할점은 mongo에 유저아디 비번을 설정할거면 컨테이너를 만들 때 환경변수를 따로 넣어줘야한다. 

 

그럼 서버와 데이터베이스는 연결되었고 이제 프론트앤드만 돌리면 된다. 프론트는 크루분들이 파일을 다 주셨고 package.json에 서버 url만 넣으면 연결되는 간단한 구조였다. 그리고 이걸 s3에 올려서 정적 웹 호스팅을 하면 되고 그걸 배포 자동화를 시켰다.

여기서 오류가 났던 부분은 로컬에선 패키지제이슨에 앤드포인트를 넣으면 됐는데 s3로 배포할 땐 그 값을 읽지 못 해서 저렇게 따로 yml에 직접 환경변수로 넣어줘야했다. 그러고 s3에 index.html로 들어가면 잘 실행되는걸 확인할 수 있다.

'프로젝트 회고' 카테고리의 다른 글

프로젝트3 회고록  (0) 2022.07.13
58일차~61일차 프로젝트3  (0) 2022.07.13
프로젝트2 회고록  (0) 2022.06.15
프로젝트 1 api  (0) 2022.05.16
첫번째 프로젝트 회고록  (0) 2022.05.13