라벨이 enviroment인 게시물 표시

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'를 사용합니다. 따라서 컨테이너를 생성시 아래와 같이 작성해야합니다. 이후 정상 동작 되는것을 확인할수 있습니다.

NestJS enviroment file이 서버 실행전에 제대로 작성됬는지 자동으로 확인

이미지
 안녕하세요. 알렉스 입니다. 이번에는 저번 글을 다음으로 NestJS에서 환경변수 파일을 적용하되 환경변수가 모두 제대로 기입됬는지 확인하는 코드를 작성하도록 하겠습니다. 이 글을 따라할때 이전글을 참고해 주시기 바랍니다. 거기서 필수적으로 설치해야하는 npm이 있기 때문에 아래 링크를 참고해 주시기 바랍니다. NestJS enviroment file 자동으로 적용하기 1. npm모듈 설치 - 환경변수의 테스트를 위해 2개의 joi패키지를 설치합니다. $ npm install @hapi/joi copy $ npm install --save-dev @types/hapi__joi copy 사진1) .env파일 작성 이번 글에서는 간단하게 2개만 env파일에 작성하도록 하겠습니다. Database Host와 Port입니다.  // src/app.module.ts import * as Joi from '@hapi/joi' ; import { Module } from '@nestjs/common' ; import { ConfigModule } from '@nestjs/config' ; import { AppController } from './app.controller' ; import { AppService } from './app.service' ; @ Module ({ imports : [ ConfigModule . forRoot ({ // env파일 스키마 점검 validationSchema : Joi . object ({ DATABASE_HOST : Joi . required (), // env파일에 DATABASE_HOST가 반드시 있어야함 DATABASE_PORT : Joi . number (). default ( 3305 ), // env파일에 DATABASE...

NestJS enviroment file 자동으로 적용하기

 안녕하세요. 알렉스 입니다. 이번에는 NestJS을 활용하면서 환경변수 파일을 쓸때 dotenv npm을 활용했습니다. 하지만 위 방법은 매 코드마다 적용을 해야하는 불편함이 있었습니다. '@nestjs/config'를 사용하면 따로 import할 필요 없이 자동으로 env파일이 적용됩니다. 더 자세한 사항에 대해서는 공식 문서를 참고해 주시기 바랍니다.( 링크 ) 1. npm모듈 설치 '@nestjs/config' 모듈을 설치해 줍니다. $ npm i --save @nestjs/config copy 2. 'app.module.ts'에 코드 작성 // /src/app.module.ts import { Module } from '@nestjs/common' ; import { ConfigModule } from '@nestjs/config' ; import { AppController } from './app.controller' ; import { AppService } from './app.service' ; @ Module ({ imports : [ ConfigModule . forRoot ()], controllers : [ AppController ], providers : [ AppService ], }) export class AppModule {} 'app.module.ts'에 위와같은 코드를 작성해 줍니다. # /.env #DataBase DB_HOST=localhost DB_PORT=3306 DB_USERNAME=user DB_PASSWORD=awifniedls DB_DATABASE=excercise1 위 와같이 env파일을 작성해 줍니다. // /src/app.module.ts import { Module } from '@nestjs/common...