스택큐힙리스트

도커 컴포즈에서 환경 변수를 NodeJS 프로젝트로 전달하는 방법입니다. 본문

카테고리 없음

도커 컴포즈에서 환경 변수를 NodeJS 프로젝트로 전달하는 방법입니다.

스택큐힙리스트 2023. 12. 18. 12:01
반응형

내가 NodeJS 애플리케이션을 도커 크기로 만들고 싶습니다.


이 애플리케이션은 두 부분으로 구성됩니다:



  • 서버 부분은 DB에서 데이터를 가져 오는 API를 실행합니다. 이는 포트 3000에서 실행됩니다;


  • 클라이언트 부분은 서버 부분의 API 엔드 포인트에 호출을 수행합니다. 이는 포트 8080에서 실행됩니다;



이와 함께 클라이언트 부분에 server_address라는 변수가 있으며 값은 localhost:3000입니다. 그러나 여기에 문제가 있습니다. 두 프로젝트는 각각 별도의 Dockerimage 파일에서 독립적으로 도커 크기로 조정되어야합니다. 그리고 이를 하나의 docker-compose.yml 파일에 결합해야합니다.


그래서 어떤 이유로 인해 도커 컨테이너를 docker-compose.yml 파일을 통해 실행해야합니다. Dockerfile에서 서버 주소를 외부에서 NodeJS 프로젝트로 전달할 수 있는 방법이 있을까요?


docker-compose.yml

버전: 3
서비스:
클라이언트 사이드 앱:
이미지: 내 클라이언트 사이드 도커 이미지
환경:
- BACKEND_SERVER=여기에 백엔드 서버를 입력해야합니다
포트:
- 8080:8080
서버 사이드 앱:
이미지: 내 서버 사이드 도커 이미지
포트:
- 3000:3000

Dockerfile은 다음과 같습니다:


FROM node:8.11.1
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD [npm, run, dev]

이 파일들이 있으면, 저의 관심사는 다음과 같습니다:



  • 프로젝트에서 변수 BACKEND_SERVER를 사용할 수 있을까요? 그렇다면, 어떻게 할 수 있을까요? 저는 Dockerimage 파일이 아닌 프로젝트 자체를 의미합니다.

답변 1

node.js 코드에서 process.env를 사용하세요.


process.env.BACKEND_SERVER

도커 컴포즈 파일에서 변수를 언급하세요.


version: 3
services:
client-side-app:
image: my-client-side-docker-image
environment:
- BACKEND_SERVER=여기에 백엔드 서버를 입력해야합니다
ports:
- 8080:8080
server-side-app:
image: my-server-side-docker-image
ports:
- 3000:3000

답변 2

도커 컴포즈로부터 환경 변수를 NodeJS 프로젝트에 전달하는 방법은 무엇인지 알아보겠습니다. 도커 컴포즈는 여러 개의 도커 컨테이너를 정의하고 실행하기 위한 도구입니다. 환경 변수는 프로젝트에 필요한 구성 정보를 전달하는 중요한 수단이며, 이는 NodeJS 애플리케이션에서도 사용될 수 있습니다.
도커 컴포즈는 YAML 파일로 구성되며, 여기에 환경 변수를 설정하는 데 사용할 수 있는 몇 가지 옵션이 있습니다. 가장 일반적인 방법은 `environment` 키워드를 사용하여 각 서비스에 대한 환경 변수를 설정하는 것입니다. 이렇게 하면 도커 컴포즈가 해당 변수를 컨테이너에 전달하게 됩니다.
예를 들어, NodeJS 프로젝트에서 DB 호스트, 포트 및 사용자 정보와 같은 환경 변수를 사용한다고 가정해 봅시다. 도커 컴포즈 파일에서 다음과 같이 설정할 수 있습니다.
```
version: '3'
services:
app:
build: .
environment:
- DB_HOST=mydbhost
- DB_PORT=5432
- DB_USER=mydbuser
- DB_PASS=mydbpassword
```
이제 이러한 환경 변수를 NodeJS 애플리케이션에서 사용할 수 있습니다. NodeJS에서는 `process.env` 객체를 통해 환경 변수에 접근할 수 있습니다. 예를 들어 DB 호스트의 경우:
```javascript
const db_host = process.env.DB_HOST;
```
위와 같은 방식으로 환경 변수를 사용할 수 있습니다.
도커 컴포즈 파일에 환경 변수를 설정하면 NodeJS 프로젝트에서 이를 사용할 수 있습니다. 이를 통해 계정 정보, API 키, 데이터베이스 연결 정보와 같은 중요한 구성 요소를 컨테이너 외부에서 주입할 수 있습니다. 이는 보안 및 유연성 측면에서 매우 유용합니다.
앞서 언급한 방법을 통해 도커 컴포즈로부터 환경 변수를 NodeJS 프로젝트에 전달하는 방법을 알아보았습니다. 이를 통해 환경 변수의 중요성과 이를 활용하는 방법을 이해할 수 있습니다. NodeJS 프로젝트에 필요한 구성 정보를 쉽게 전달하고 애플리케이션을 유연하게 조정할 수 있습니다.

반응형
Comments