我有一个NodeJS应用程序,我想将其调整为停靠大小。
该应用程序由两部分组成:
- 服务器部分,运行一个从数据库获取数据的API,运行在3000端口;
- 客户端部分,其从服务器部分调用API端点。这在端口8080上运行;
这样,我的客户端部分就有了一个名为“server_address”的变量,它的值为“localhost:3000”。但问题是,这两个项目应该在一个单独的Dockerimage
文件中按码头大小排列,然后合并到一个docker-compose.yml
文件中。
由于某些原因,我不得不通过docker-compose.yml
文件来运行docker容器,那么是否有可能以某种方式连接这些东西,并将服务器地址从dockerfile外部传递到NodeJS项目中?
停靠- 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
文件,而是引用项目本身?
2条答案
按热度按时间xlpyo6sf1#
在node.js代码中使用process.env,如下所示
在docker-compose文件中提及您的变量。
qmb5sa222#
除了前面的答案之外,您还可以在运行容器时定义变量及其值:
另外两种不同的方式是:(1)引用已经导出到本地环境的环境变量,以及(2)从文件加载变量:
(一)
(二)
如果您不想在docker-compose文件中提及您的变量,这些选项非常有用。
参考文献