실습과제: 새 버전 릴리즈와 ECS 배포
Bare minimum requirement
- 웹 서버 이미지의 새 버전이 준비되었을 때, 새로운 작업 정의와 서비스를 만들고, 새 버전이 배포되도록 해야 합니다.
- 고의적으로 애플리케이션이 정상적으로 실행되지 못하게 만들어서, 배포가 실패하는 것을 로그를 통해 확인할 수 있어야 합니다.
yml 파일 작성
push 후 github action 작동
트러블슈팅
image를 찾을 수 없다는 오류 발생
yml 파일의 문제인 것 같았는데, 팀원분의 코드와 비교해봐도 다른 점이 없었다..
팀원분의 코드를 복사 붙여넣기 하였고, 실제로 다른 부분이 없었다
그러나 그 코드로 작동시 해결되었다..;;
가끔 vscode에서 같은 코드여도 뭔가 인식 못할때가 있는데 그런 상황인 것 같았다
트러블슈팅
테스크 정의 json 파일을 찾을 수 없다는 오류 발생
파일의 위치를 지정해주지 않아서 생기는 것 같았다
파일의 위치가 기존엔 루트폴더 안에 있었는데, helloworld-was 폴더 안으로 옮겼고
task-definition.json 앞에 경로를 추가했다
그런데.. 팀원2님은 루트 폴더에 두고 경로 지정을 안해도 작동했는데 왜 나랑 팀원1님은 그렇게 하면 안되는지 모르겠다 ㅠ ㅠ ..
트러블슈팅
컨테이너를 찾을 수 없다는 오류 발생
이건 그냥 오타 문제였다.. ㅎㅎ;; 처음에 컨테이너 만들 때 스펠링을 하나 빼먹어서..
오타난 컨테이너 이름으로 수정 후 해결 완료 ㅎㅎ ・・・
트러블슈팅
배포가 안되는 문제 발생
테스크 정의까지는 생성이 잘 되는데 서비스 배포가 안되는 문제가 발생했다
태스크 정의는 정상적으로 생성된 모습..
mongoDB는 아직 연결을 안했는데, mongoDB를 연결하는 내용이 포함된 이미지 파일이여서 발생한 문제였다
helloworld-was/plugins 폴더 안의 mongodb.js 파일을 삭제한 후 해결됐다
정상적으로 배포가 완료된 모습!
연습과제: WAS에서 mongodb로의 접속
Goal
- WAS에서 mongodb에 접속하고, 쿼리 해보면서 접속이 정상적인지 확인해 봅니다.
mongodb.js 파일 작성
npm start로 로컬환경에서 실행
트러블슈팅
환경변수를 인식하지 못하는 오류 발생(1)(MongoServerSelecionErroro: getaddrinfo ENOTFOUND ${mongo_hostname})
${mongo_hostmane} 변수를 인식하지 못하는 오류가 발생했다
팀원분과 코드를 비교했는데 다른 점이 정말 없었다..
팀원분의 코드로 바꿔봤는데, 코드의 차이는 전혀 없었고
원래 환경변수로 인식되지 않고 그냥 문자로 인식되던 것들이 환경변수로 인식되었다
이것도 가끔 vscode에서 나던 오류인 것 같다 ;;
트러블슈팅
환경변수를 인식하지 못하는 오류 발생(2)(MongoServerSelecionErroro: getaddrinfo ENOTFOUND undefined)
환경변수로 인식은 되었지만 값들이 읽히지 않았다
mongodb.js 파일의 내용에 따르면 process.env 파일의 내용들을 읽게 돼있었는데 해당 내용을 못읽는 것 같았다
export 명령어를 사용해 환경변수를 입력해주니 인식되었다
트러블슈팅
mongoDB 접속 주소를 찾지 못하는 오류 발생(MongoServerSelecionErroro: getaddrinfo ENOTFOUND)
mongoDB에 접속하기 위한 주소를 인식하지 못했다
hostname의 변수로 입력한 주소가 인식이 안되는 거였다
root, localhost 등으로 접속이 안됐다
127.0.0.1로 설정하여 해결됐다
정상 접속 확인
docker로 배포하기 위해 container로 작동 되는지 확인
mongodb 이미지 컨테이너로 작동
helloworld-was 폴더를 이미지로 빌드
컨테이너로 작동
트러블슈팅
서버로 접속 거부되는 오류 발생(MongoServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017)
로컬(npm start)로 접속할 때 사용했던 환경변수로 도커 컨테이너를 만들 시 접근 거부되는 오류가 발생했다
환경변수로 localhost, mongo 등등을 사용해봤지만 여전히 해결되지 않았다
팀원님이 gpt를 닦달해서 얻어낸 결과, hostname의 환경변수 값으로 host.docker.internal 을 넣어보라는 얘기를 했다
((진짜 구글링을 3시간동안 쥐잡듯이 했는데 전혀 발견하지 못했던 내용이다,,;;))
해당 환경변수로 컨테이너를 만들었다
정상 작동하는 것을 볼 수 있다
브라우저로 접속시 정상 작동 되는 것을 볼 수 있다
helloworld-was/route/example/index.js 파일의 내용을 fastify.post로 변경한다
이미지를 새로 빌드한 후 컨테이너를 실행한다
curl -X POST 요청을 보내 mongoDB에 데이터를 삽입한다
mongoDB compass를 통해 DB에 내용이 등록되었는지 확인한다
test 데이터베이스가 생긴 것을 확인할 수 있다
article 테이블이 생긴 것을 확인할 수 있다
"안녕 세상아"라는 내용이 등록된 것을 확인할 수 있다