如何将环境变量从 docker-compose 传递到 NodeJS 项目中?
How to pass environment variables from docker-compose into the NodeJS project?
我有一个 NodeJS 应用程序,我想要 docker-size。
申请由两部分组成:
服务器部分,运行正在从数据库中获取数据的API。这是端口 3000 上的 运行ning;
客户端部分,它正在从服务器部分调用 API 端点。这是端口 8080 上的 运行ning;
有了这个,我的客户端有一个名为 "server_address" 的变量,它的值为 "localhost:3000"。但事情是这样的,这两个项目应该 docker 大小在一个单独的 Dockerimage
文件中,并合并在一个 docker-compose.yml
文件中。
所以由于某些原因,我必须通过 docker-compose.yml
文件 运行 docker 容器。那么是否有可能以某种方式连接这些东西并将服务器地址从 docker 文件外部传递到 NodeJS 项目中?
docker-composer.yml
version: "3"
services:
client-side-app:
image: my-client-side-docker-image
environment:
- BACKEND_SERVER="here we need to enter backend server"
ports:
- "8080:8080"
server-side-app:
image: my-server-side-docker-image
ports:
- "3000:3000"
两个 Dockerfile 看起来像:
FROM node:8.11.1
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "dev"]
有了这些文件,我有以下顾虑:
- 我可以在项目中以某种方式使用变量
BACKEND_SERVER
吗?如果是,该怎么做?我指的不是 Dockerimage
文件,而是项目本身?
在node.js代码中使用process.env,像这样
process.env.BACKEND_SERVER
在 docker-compose 文件中提及您的变量。
version: "3"
services:
client-side-app:
image: my-client-side-docker-image
environment:
- BACKEND_SERVER="here we need to enter backend server"
ports:
- "8080:8080"
server-side-app:
image: my-server-side-docker-image
ports:
- "3000:3000"
我有一个 NodeJS 应用程序,我想要 docker-size。
申请由两部分组成:
服务器部分,运行正在从数据库中获取数据的API。这是端口 3000 上的 运行ning;
客户端部分,它正在从服务器部分调用 API 端点。这是端口 8080 上的 运行ning;
有了这个,我的客户端有一个名为 "server_address" 的变量,它的值为 "localhost:3000"。但事情是这样的,这两个项目应该 docker 大小在一个单独的 Dockerimage
文件中,并合并在一个 docker-compose.yml
文件中。
所以由于某些原因,我必须通过 docker-compose.yml
文件 运行 docker 容器。那么是否有可能以某种方式连接这些东西并将服务器地址从 docker 文件外部传递到 NodeJS 项目中?
docker-composer.yml
version: "3"
services:
client-side-app:
image: my-client-side-docker-image
environment:
- BACKEND_SERVER="here we need to enter backend server"
ports:
- "8080:8080"
server-side-app:
image: my-server-side-docker-image
ports:
- "3000:3000"
两个 Dockerfile 看起来像:
FROM node:8.11.1
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "dev"]
有了这些文件,我有以下顾虑:
- 我可以在项目中以某种方式使用变量
BACKEND_SERVER
吗?如果是,该怎么做?我指的不是Dockerimage
文件,而是项目本身?
在node.js代码中使用process.env,像这样
process.env.BACKEND_SERVER
在 docker-compose 文件中提及您的变量。
version: "3"
services:
client-side-app:
image: my-client-side-docker-image
environment:
- BACKEND_SERVER="here we need to enter backend server"
ports:
- "8080:8080"
server-side-app:
image: my-server-side-docker-image
ports:
- "3000:3000"