해결된 질문
작성
·
221
0
만약 도커로 백엔드 실행하기싫고,
내 로컬에서 백엔드 실행한다고하면
mongoose
.connect("mongodb://my-database:27017/mydocker")
.then(() => {
console.log("DB 연결 성공");
})
.catch((err) => console.log("DB 연결 실패", err));
connect부분을 로컬호스트:27017로만 변경하면 되는거는 알겠는데..
너무 번거로운거같은데 혹시 .env에 설정하는 방식같은게 없을까요?
예를들면 프로덕션, 개발모드에 따라서env를 바꿀수있잖아유
그런것처럼 도커컨테이너 환경 혹은 그냥 로컬에서 백엔드 실행했을때환경 이런걸 구분할수있는 방법은없나유?
답변 2
1
안녕하세요! 반가우면반갑다고해님!
추후 배포관련 수업에서 해당 내용을 자세하게 다루게 됩니다!^^
간략히만 미리 말씀드리면,
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가 덮어쓰게 된답니다!^^
0
안녕하세요, 인프런 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) 등 다양한 환경에서의 실행을 위한 구성을 분리하고 관리할 수 있습니다. 환경변수를 통한 설정은 코드의 변경 없이 외부에서 실행 환경을 조정할 수 있는 유연한 방법을 제공합니다.
감사합니닷!