[Docker] docker container run - 환경 변수(.env)가 설정되지 않았습니다.

초이지수·2023년 8월 2일

Docker 이미지 빌드까지 하고 => 이미지 생성 완료!
생성된 이미지를 사용해 컨테이너를 실행하려고 했다.(?)


🙋🏻‍♀️ Docker 컨테이너 실행!

1. Docker 이미지를 컨테이너로 실행하는 기본 명령어

docker container run [옵션] 이미지_이름 [명령]

2. 빌드한 이미지 이름이 "myapp"이고 웹 애플리케이션을 실행하기 위해 포트 3000을 호스트의 3000 포트와 연결하고 싶다

docker container run -d -p 3000:3000 myapp

근데 왜 와이? 또 에러가 ... 나죠?
환경 변수 설정 잘 해놨는데... ? 로그 파일까지 잘 찍히고 있는데요(?)


🔗 프로젝트 환경 변수 구조

.env 파일

NODE_ENV=development

/src/config/.development.env

LOG_FILE_PATH=/Users/jisoochoi/project/logs/

이렇게 잘 설정되어 있는데요 왜 못 찾으세요.. docker님🥲


🙌🏻 구글링 해봅시다!

구글링을 열심히 해보았읍니다...

Docker 컨테이너 내에서 실행되는 애플리케이션은 호스트 환경과 별도의 독립된 환경을 갖는다. 또잉! 이게 무슨 말이람
환경 변수도 해당 컨테이너 내에 정의해야한다고 한다. 따라서, .env 파일이나 /src/config/.development.env 파일에 설정된 환경 변수는 Docker 컨테이너 내에서 직접 사용되지 않는다...........

그럼 어떻게 해야되나요?

docker container run 명령어에 환경 변수를 함께 넣어줘야 한다!

$ docker container run -d -p 3000:3000 --env-file ./src/config/.development.env nest-shoppingmall

💡 해결!


➕ 추가

docker compose로 하게 된다면?

1. docker-compose.yml 파일을 작성해주고

version: '3'
services:
    nest-shoppingmall:
        build:
            context: .
            dockerfile: Dockerfile
        ports:
            - '3000:3000'
        env_file:
            - ./src/config/.development.env

2. docker compose 명령어를 입력해주면 된다!

docker-compose up -d
profile
닫혀 있어서 벽인 줄 알고 있지만, 사실은 문이다.

0개의 댓글