인프런 커뮤니티 질문&답변

반가우면반갑다고해님의 프로필 이미지

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

04-05 ODM - MongoDB 접속

선생님 그러면 만약에 도커로 백엔드 실행하지말고 구냥..

해결된 질문

24.06.04 02:48 작성

·

201

0

 만약 도커로 백엔드 실행하기싫고,

내 로컬에서 백엔드 실행한다고하면

mongoose
    .connect("mongodb://my-database:27017/mydocker")
    .then(() => {
        console.log("DB 연결 성공");
    })
    .catch((err) => console.log("DB 연결 실패", err));

connect부분을 로컬호스트:27017로만 변경하면 되는거는 알겠는데..

너무 번거로운거같은데 혹시 .env에 설정하는 방식같은게 없을까요?

 

예를들면 프로덕션, 개발모드에 따라서env를 바꿀수있잖아유

그런것처럼 도커컨테이너 환경 혹은 그냥 로컬에서 백엔드 실행했을때환경 이런걸 구분할수있는 방법은없나유?

답변 2

1

노원두님의 프로필 이미지
노원두
지식공유자

2024. 06. 12. 12:03

안녕하세요! 반가우면반갑다고해님!

추후 배포관련 수업에서 해당 내용을 자세하게 다루게 됩니다!^^

간략히만 미리 말씀드리면,

1. .env 파일을 아래와 같이 나누어줍니다.

// .env
MY_DB=localhost:27017

// .env.docker
MY_DB=my-database:27017

 

2.
2-1) 로컬에서 실행하는 경우, .env를 기반으로 실행하게 될 것이고,
2-2) 도커에서 실행하는 경우, docker-compose.yaml 파일을 통해, .env.docker를 환경변수로 주입하게 되면, 기존의 .env를 .env.docker가 덮어쓰게 된답니다!^^


반가우면반갑다고해님의 프로필 이미지

2024. 06. 13. 01:25

감사합니닷!

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 06. 02:51

안녕하세요, 인프런 AI 인턴입니다.

반가우면반갑다고해님, 프로젝트에서 환경별로 설정을 다르게 적용하고 싶으시다면 환경변수(.env)를 사용하는 것이 일반적입니다. 예를 들어, 로컬 환경에서는 MongoDB의 주소를 localhost:27017로, 도커 컨테이너를 사용할 경우에는 컨테이너의 주소를 사용하도록 설정할 수 있습니다.

.env 파일에 각 환경별로 변수를 설정하고, 코드 내에서 process.env를 통해 접근하여 참조할 수 있습니다. 예를 들면, .env 파일에는 다음과 같이 적을 수 있습니다.

DATABASE_URL=mongodb://localhost:27017/mydatabase

그리고 도커 환경에서 실행하는 경우 다른 .env 파일을 사용하거나 환경변수를 명령어를 통해 재정의하여 사용할 수 있습니다. 예를 들어, 도커 환경에서 실행할 때는 다음과 같이 설정할 수 있습니다.

DATABASE_URL=mongodb://my-database:27017/mydocker

Node.js에서는 process.env.DATABASE_URL로 이 값을 읽어서 사용할 수 있습니다. 코드 예시는 다음과 같습니다.

mongoose
    .connect(process.env.DATABASE_URL)
    .then(() => {
        console.log("DB 연결 성공");
    })
    .catch((err) => console.log("DB 연결 실패", err));

이런 방식을 통해 개발(dev), 테스트(test), 프로덕션(prod) 등 다양한 환경에서의 실행을 위한 구성을 분리하고 관리할 수 있습니다. 환경변수를 통한 설정은 코드의 변경 없이 외부에서 실행 환경을 조정할 수 있는 유연한 방법을 제공합니다.