본문 바로가기
Research/Nest.js

nestjs_실패로그_프로젝트 docker 환경변수 설정 문제

by RIEM 2023. 4. 26.

상황

프로젝트를 Docker 이미지로 빌드한 다음 배포하기 전에 실행을 해보았는데, 환경변수 문제로 실행되지 않는 것으로 보인다. 이 문제를 해결하다가 시간 부족으로 일단 잠시 덮어두고, 훗날 참고를 위해 기록을 남겨둔다.

목표

nest.js 프로젝트 docker로 배포하기

Dockerfile 생성

# 프로젝트 루트폴더에 파일명 Dockerfile 생성

FROM node:18

# 명령들이 실행될 경로
RUN mkdir -p /var/app
WORKDIR /var/app

COPY package*.json ./
RUN npm install 

COPY . .
RUN npm install
RUN npm run build
EXPOSE 3000
CMD [ "node", "dist/main.js" ]

.dockerignore

.git
*Dockerfile*
node_modules

Docker 이미지 생성

docker build . -t nest-docker

Docker 실행

docker container run -d -p 3000:3000 nest-docker

 

에러 발생

docker 이미지 생성까지는 잘 되었는데, 어플리케이션이 정상적으로 실행되지 않는다. 환경변수가 제대로 주어지지 않아서 문제가 발생한 것으로 보인다.

 

참고했던 Dockerfile

# 프로젝트 루트폴더에 파일명 Dockerfile 생성

FROM node:18

# 명령들이 실행될 경로
RUN mkdir -p /var/app
WORKDIR /var/app

COPY package*.json ./
RUN npm install 

COPY . .
RUN npm install
RUN npm run build
EXPOSE 3000
CMD [ "node", "dist/main.js" ]
# 프로젝트 루트폴더에 파일명 Dockerfile 생성

# 가벼운 alpine 버전 사용
# 다단계 빌드를 위한 development 이미지 이름 명시
FROM node:12.13-alpine AS development

# 명령들이 실행될 경로
WORKDIR /usr/src/app

COPY package*.json ./
RUN npm install --only=development
COPY . .

# 앱 폴더 빌드 확인
RUN npm run build

# 추가 production 이미지 생성
FROM node:12.13-alpine as production

# docker build 시 --build-arg 옵션으로 넘길 수 있는 인자 정의
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}

WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --only=production
COPY . .

# 빌드된 폴더 복사
COPY --from=development /usr/src/app/dist ./dist

# 도커 컨테이너가 사용할 포트
EXPOSE 8080

CMD ["node", "dist/main."]

https://velog.io/@hey-chocopie/3.-nestjs-%EB%8F%84%EC%BB%A4%EB%9D%BC%EC%9D%B4%EC%A7%95

댓글