728x90
728x90
[NestJS] Docker와 Git Actions, EC2를 활용한 CI/CD 환경 구축 - 도커라이징하여 EC2에 배포하기
공부방2023. 9. 22. 14:43[NestJS] Docker와 Git Actions, EC2를 활용한 CI/CD 환경 구축 - 도커라이징하여 EC2에 배포하기

서론 사내 서비스가 Git Actions, Docker, EC2, PM2를 활용해 CI/CD 및 파이프라인을 구축하여 사용하고 있었기에 학습이 필요하다.. 간단하게 따라해볼 무언가를 찾아서 따라해보면서 학습할 것이 필요했는데 초행이다보니 같은 환경에서 진행한 분을 찾기 어려워 외국 유튜브 영상이나 기타 해외 자료들을 활용하며 따라하며 공부했다. CI/CD란? Continuos Integration / Continuous Delivery의 약자로 단어 뜻대로 지속적 통합과 배포를 뜻한다. DockerFile 작성 Docker에 이미지를 빌드하고 컨테이너 생성을 하는 과정은 단순하고 Nodejs docs에서도 가이드라인을 제시해준다. https://nodejs.org/ko/docs/guides/nodejs-..

[Javascript] using : 자바스크립트의 새로운 변수 키워드
공부방2023. 9. 18. 19:09[Javascript] using : 자바스크립트의 새로운 변수 키워드

서론 즐겨보는 개발 관련 유튜브 중 하나인 노마드코더에서 흥미로운 영상을 게시했다. 기존 자바스크립트의 변수 const, var, let을 대체할 강력한 키워드인 using 이라고 소개했다. 역시 프로유튜버답게(??) 어그로를 잘 끄셔서 자연스레 정주행했다. 현재 자바에서 타입스크립트로 전향한 지금, 꽤나 중요한 이슈사항이 될 것 같아서 포스팅하여 정리해보려고 한다. https://www.youtube.com/watch?v=-NmwyJ5S-IY&t=151s 기존의 자바스크립트 변수 간단하게 기존 변수들에 대해 알아보자. es6에서 포함된 기능중 하나는, 변수 선언에 사용할 수 있는 키워드인 let, const의 추가였다. 혹여 단순 using에 대한 정보만을 얻고자한다면, 스크롤을 많이 내려야 할 것 같..

[Docker] Container 실행하자마자 exit 되는 경우 / docker ps 아무것도 없을 때
트러블슈팅2023. 9. 17. 09:48[Docker] Container 실행하자마자 exit 되는 경우 / docker ps 아무것도 없을 때

에러 상황 EC2, Github Actions, Docker을 통한 CI/CD 파이프라인 구축 실습 중 발생한 상황이다. Github의 Action runner를 활용하여 CD를 수행했을 때 실행중인 컨테이너에 아무것도 없는 모습이다. 해결 1. 아래 명령어를 사용해 모든 컨테이너 목록을 조회했다. docker ps -a 분명 실행은 되었지만 종료된 모습이다. 2. 로그를 찍어 보니 해당 에러를 확인할 수 있었다. docker logs [컨테이너 NAMES] 나의 경우 Dockerfile의 마지막 줄에 실행 명령어로 node dist/main.js을 사용하였는데 해당 모듈을 찾을 수 없다는 에러였다. 해결 Dockerfile에서, 설정 경로와 카피 경로를 다시 설정하고, 실행 명령어를 바꿔주었더니 동작하..

윈도우 SSH접속 시 pem 파일 권한 변경 (윈도우 chmod 400)
트러블슈팅2023. 9. 16. 17:52윈도우 SSH접속 시 pem 파일 권한 변경 (윈도우 chmod 400)

사내에서 mac os를 사용해서 개발을 하다가 집에서 해당 기술들을 학습한 후 토이프로젝트 적용을 시켜보려고 ec2를 실행시킬 일이 있어서 pem파일을 chmod 400을 통해 권한을 설정하려고 했는데 권한 설정이 불가능하여 접속이 되지 않았다. 이럴 때 아래와 같은 명령어를 사용하자. 반드시 CMD에서 사용해야하며 icacls.exe 경로+pem이름 뒤 명령어를 입력하면 된다 icacls.exe myec2.pem /reset icacls.exe myec2.pem /grant:r %username%:(R) icacls.exe myec2.pem /inheritance:r

[Git Actions / Docker] An image does not exist locally with the tag: [repo]/[image]
트러블슈팅2023. 9. 15. 18:46[Git Actions / Docker] An image does not exist locally with the tag: [repo]/[image]

에러 메세지 An image does not exist locally with the tag: [repo]/[image] 아래와 같은 action.yml을 사용하고있었는데 계속해서 리파지토리에 이미지를 빌드한 후 태그를 못잡아 주는 것 같았다. name: Docker Image CI on: push: branches: [ "main" ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Login Dockerhub env: DOCKER_USERNAME: ${{secrets.DOCKERHUB_USERNAME}} DOCKER_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} run: docke..

GitHub Actions을 사용하기 위한 Token 발급 방법
공부방2023. 9. 14. 14:41GitHub Actions을 사용하기 위한 Token 발급 방법

현재 프로젝트 환경이 docker - gitactions을 통한 CI/CD구축이 되어 있어 너무 생소했다. 실습 겸 새로 프로젝트를 하나 생성하여 CI/CD를 구축해 볼 계획이다 그러기에 앞서 Token을 발급해보자 발급 방법 1. Settings - Developer Settings Settings에 들어가서 최하단에 Developer Settings에 들어간다. 2. Personal access tokens 에서 Generate new token 토큰 발급을 해준다. workflow, write, delete권한은 주어야 한다. [Feedback tracking] Fine-grained personal access tokens · community · Discussion #36441 This topi..

[NestJS] JWT Guard 사용 중 에러 (metatype is not a constructor / In order to use "defaultStrategy", please, ensure to import PassportModule in each place where AuthGuard() is being used, Otherwise, passport won't work correctly.)
공부방2023. 9. 10. 22:30[NestJS] JWT Guard 사용 중 에러 (metatype is not a constructor / In order to use "defaultStrategy", please, ensure to import PassportModule in each place where AuthGuard() is being used, Otherwise, passport won't work correctly.)

에러 메세지 JWT Guard설정 후 테스트를 위해 서버를 실행했을 때 발생 원인 그대로 번역하면 메타타입은 생성자가 아니라는 것 같음. metatype is not a constructor에러는 커스텀 가드를 사용할 때 발생할 수 있는 일반적 오류중 하나이며 @UseGuards() 데코레이터에 가드 클래스를 전달할 때 메타타입 정보가 올바르게 전달되지 않을 때 발생한다고 한다. 즉, 인스턴스를 전달하는 것이 아니라 생성자 함수를 전달해야한다. //before @UseGuards(AuthGuard) //after @UseGuards(AuthGuard()) 문제가 된 부분을 수정해주었음. 새로운 에러 In order to use "defaultStrategy", please, ensure to import..

[NestJS] NestJS 개발 환경 셋팅
공부방2023. 9. 9. 00:20[NestJS] NestJS 개발 환경 셋팅

서론 9개월 정도를 스프링만 사용하던 신입 개발자인 나에게 갑작스레 실무에서 Node.js를 사용해야하는 상황이 닥쳤다. 기존 backend 코드를 보니 모듈을 import하는 것들이 대부분 @nestJS/어쩌고로 되어있는 typescript였다. 실무를 위해 빠른 적응이 필요했다. 나중에 node와 typescript, nest등에 대한 적당히 자세한(?) 공부 및 포스팅을 진행할 것이다. 간단하게 알아본 바로는 다음과 같았다. NestJS는 서버 측 노드 애플리케이션을 구축하기 위한 프레임워크로 Express와 같은 HTTP Server Framework를 내장하고 있고, 대부분 TypeScript로 구성되어 있다고한다. 이미 셋팅되어있는 개발환경을 다시 뜯어보기전에, 어떻게 개발환경을 셋팅하는지 부..

728x90
728x90
image