라벨이 파일인 게시물 표시

docker 도커에 환경변수(environment file)파일을 외부에 적용하기

이미지
 도커를 이용하여 컨체이너를 만들다보면 환경변수 파일을 어떻게 적용해야할지 난감한 경우가 있습니다. 단순한 방법으로 환경변수 파일까지 갖이 이미지로 만든 다음에 컨테이너로 만드는 방법이 있습니다. 이 방법은 다른 환경의 서버에서 적용할려면 각각의 서버에 이미지를 다 만들어야 하는 불편함이 있습니다. 관련 gitHub 링크 : https://github.com/Alex-Choi0/docker_nestjs_env.git 위의 링크에서 코드를 클론(branch : master)받으시고 아래 사진과 같이 이미지를 만듭니다. 필요한 의존성 이미지를 받고 Dockerfile을 기준으로 커스텀 이미지를 생성하게 됩니다. 커스텀 이미지의 태그는 'nestjs:env'입니다. 도커 이미지를 attach 모드로 컨테이너를 생성하면 위와 같은 에러가 나오는 것을 알수 있다. 해당 에러는 환경변수 'DATABASE_HOST'가 설정되지 않았다는 뜻이다. '.dockerignore'에서 확인하면 해당 env파일은 이미지에 들어가지 않았다. 따라서 컨테이너를 생성할때 env 파일을 지정해 줘야 한다. 위 사진과 같이 '.env'파일이 적용된 것을 확인할수 있습니다. 정상적으로 적용되어 NestJS 서버가 동작하는 것을 알수 있습니다. 하지만 개발용과 배포용 환경변수파일이 따로 있다면 어떻게 해야 할까요? 관련 gitHub 링크 : https://github.com/Alex-Choi0/docker_nestjs_env.git 위 링크에서 custom_env branch를 클론 위 링크에서 custom_env branch는 '.env'가 아닌 '.development.env'를 사용합니다. 따라서 컨테이너를 생성시 아래와 같이 작성해야합니다. 이후 정상 동작 되는것을 확인할수 있습니다.

AWS EC2의 SSH연결을 터미널(ubuntu)로 진행하기(sh파일)

이미지
 안녕하세요. 이번에는 EC2에 접속할때 sh파일을 이용하여 진행해 보도록 하겠습니다. 이전에 ec2에 접속한 방법이 궁금하시면 아래 링크를 확인해 주세요. 링크 : https://engineeringshw.blogspot.com/2021/05/aws-ec2-1.html 위의 링크로 EC2에 접속하면 AWS웹에 접속해서 ssh명령어를 확인한 다음에 pem파일이 있는 폴더에서 터미널을 만들고 명령어를 입력해야 했습니다. 하지만 따로 sh파일을 만들어서 그걸 실행하면 EC2의 SSH접속을 할수 있도록 할 것입니다. 사진1) pem파일이 있는 폴더 사진2) sh파일 생성  일단 pem파일이 있는 폴더로 터미널을 열어야 합니다. 사진3) AWS EC2의 SSH string을 갖고오기(빨간박스) 사진4) sh파일에 SSH string 입력  이제 AWS사이트에서 ssh 문장을 복사(사진3)한 다음 nano로 문서창을 터미널(사진1)로 열어줍니다. 그리고 복사한 문장을 sh파일(사진4)에 붙여 넣고 저장합니다. 사진5) sh파일로 EC2접속 시도(거부)  파일을 처음 생성하고 바로 EC2로 접속할려고 하면 진행이 안됩니다. 파일이 인증을 받지 못했기 때문인데 이를 위해서 인증 절차를 진행해야합니다. 사진6) sh파일 인증 사진7) sh파일로 EC2접속 사진8) sh파일이 pem파일과 같은 폴더에 있음  사진6~7을 진행하시면 sh파일의 인증후 EC2의 SSH연결이 되는것을 알수 있을것입니다. 이제 sh파일 만으로 EC2접속이 가능합니다.

nest js -4 member.controller.ts, member.module.ts app.module.ts coding

이미지
/* member.controller.ts 파일 */ // Controller를 구성하기 위한 method // Controller : nest js에서 컨트롤 구현시 필요 // Post : nest js에서 Client의 Post 구현시 필요 // Body : nest js에서 Client의 Body를 추출할때 필요 // Get : nest js에서 Client의 Get 구현시 필요 import { Controller , Post , Body , Get } from '@nestjs/common' ; // MembersService method를 참조 import { MembersService } from './member.service' ; // Controller의 시작부분 // ('members')일시 url은 root/members으로 요청이 와야 // 아래 Controller이 실행된다. @ Controller ( 'members' ) export class MembersController { // MembersService는 현재 class안에서만 사용할수 있다. // 동시에 읽기 전용이다. constructor ( private readonly membersService : MembersService ) { } // GET요청 URL : root/members @ Get () // 모든 members의 정보를 요청한다. getAllMembers (){ return { // Controller에서 membersService의 getMembers method // 에서 해당값을 요청. members : this . membersService . getMembers () } } // POST요청 URL : roo...

nest js -3 member.service.ts, members.module.ts coding

 먼저 members.module의 틀을 작성하도록 하겠습니다. /* 회원가입시 유저가 입력해야하는 정보 name : 이름 (string) password : 비밀번호 (string) email : 이메일 (string) age : 나이 (number) 위 members.module을 만드는 방법은 2가지가 있습니다. */ // 1번째 cless를 이용하여 지정 export class Member_ver1 { id : string ; // DB저장시 PR키 name : string ; password : string ; email : string ; age : number ; constructor ( id : string , name : string , password : string , email : string , age : number ) { this . id = id ; this . name = name ; this . password = password ; this . email = email ; this . age = age ; } } // 2번째 public를 이용하여 지정 export class Member_ver2 { // 위쪽 코드와 동일함 constructor ( public id : string , public name : string , public password : string , public email : string , public age : number ) { } } 2가지 경우를 모두 사용하기 위해 class 명칭을 각...

nest js -2 테스트 및 폴더 구성

이미지
   일단 'nest new [project name]'을 실행하고 생성된 폴더와 파일들이 제대로 동작되는지 확인하기 위해서 'npm start'를 실행합니다. 위 Postman을 이용항여 localhost:3000에 GET요청을 할때 Respone으로 "Hello World!"가 온것을 확인할수 있습니다.  참고로 'Hello World!'문자열의 app.service.ts에서 getHello() method의 'Hello World!'문자열이 return 한 값입니다. 전체적이 구조를 이해할려면 이전 글(nest js -1 Structure) 을 참고해 주시기 바랍니다. 이제 src경로에 'members'폴더를 만든다. 이 폴더는 members의 controller, module, modules, service의 ts파일이 저장된다. 이제 폴더와 파일이 완성되었다. 다음 글서부터는 ts파일 작성법에 대해서 글을 쓰도록 하겠습니다.