如何将环境变量从 docker-compose 传递到 NodeJS 项目中?

2024-01-16

我有一个 NodeJS 应用程序,我想要调整其大小。

该应用程序由两部分组成:

  • 服务器部分,运行一个从数据库获取数据的 API。它在端口 3000 上运行;

  • 客户端部分,它从服务器部分调用 API 端点。它运行在端口 8080 上;

这样,我的客户端部分就有了一个名为“server_address”的变量,它的值为“localhost:3000”。但事情是这样的,这两个项目都应该是 docker 大小的单独的项目Dockerimage文件并合并为一个docker-compose.yml file.

因此,由于某些原因,我必须通过运行 docker 容器docker-compose.yml文件。那么是否可以以某种方式连接这些东西并将服务器地址从外部 dockerfile 传递到 NodeJS 项目中?

docker-compose.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"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将环境变量从 docker-compose 传递到 NodeJS 项目中? 的相关文章

随机推荐

  • 防止 MSTest 复制/部署每个 dll

    从 Visual Studio 运行 MSTest 时 单元测试执行时间相对较快 当从命令行运行 MSTest 时 使用 testsettings 标志 执行需要很长时间 这是因为它花费了 95 的启动时间将 dll 复制到其 Out 文件
  • Android AlertDialog 可以根据每个请求动态更改文本

    我想显示一个 AlertDialog 其中一个选项可能会根据每个请求而更改 因此 例如 有一次我想显示 添加到联系人 选项 而另一次应该显示 从联系人中删除 选项 我的代码第一次确实可以工作 但是Android似乎缓存了AlertDialo
  • Android从不接收UDP数据包

    下面的代码会导致超时 它在非 Android Java 上运行良好 怎么了 Override public static void run System out println Local Machine IP addrStr toStri
  • 保留商品上的元数据,并在结帐完成时检索

    我试图在将某个项目添加到购物车时对其设置元数据 在每个页面重新加载时保留它 并在结账成功时检索元数据以传递到单独的 API 下面的代码是成功的 因为它在页面重新加载后回显元数据 因此我认为这是成功的 add action woocommer
  • 无法复制文件,即使在 C# 中授予了 FileIOPermission

    我正在尝试FileIOPermission在 Windows 7 中的 NET 3 5 中 我是 Windows XP 用户 并且因为我是管理员而被授予此权限 我写了下面的代码 测试一下是否可以写入C Program Files Outlo
  • 标签中的最大字符数(表名、列等)

    希望这个问题之前没有被问过 有谁知道域名的字符数限制吗 例如 如果我这样写 CREATE DOMAIN d complement activite etablissement AS character varying 它将创建一个名为的域
  • 更改 MongoDB 中现有用户的密码

    我有一个生产环境 我的 mongoDB 已启动并正在运行 DBA 要求我们更改用于身份验证的密码 执行此操作的一种方法是使用新密码再次运行 addUser 命令 如中所述更改密码 http learnmongo com posts quic
  • 如何将自定义序列化器与 Jackson 一起使用?

    我有两个 Java 类 我想使用 Jackson 将它们序列化为 JSON public class User public final int id public final String name public User int id
  • 使用声明性服务的 OSGi+Pax-Web 中的 GWT 问题

    我正在迁移在 OSGi Equinox 和 Pax web 上运行的现有 GWT 应用程序 以使用声明式服务而不是编程式服务跟踪器 我在 Equinox 中使用 Pax Web PAX WEB War 扩展器可以毫无问题地加载基于 WAR
  • 是否可以使用网络代理(例如 fiddler )将网址重定向到另一个网址

    我正在尝试解析另一个服务器中的 WSDL 文件 但该文件在整个文档中都有硬编码的 localhost 当我获取它时 显然程序抱怨 连接被拒绝 因为我的机器上没有运行任何东西 我的问题是 是否可以使用网络代理 例如 fiddler 将这些 l
  • 转到 JavaScript forEach 循环中的“下一个”迭代[重复]

    这个问题在这里已经有答案了 如何进入 JavaScript 的下一个迭代Array forEach loop 例如 var myArr 1 2 3 4 myArr forEach function elem if elem 3 Go to
  • 调整 Axes3D 标签位置

    我在 matplotlib 中的轴标签与刻度标签重叠时遇到问题 我尝试通过应用转换或调用 set y 来 手动 重新定位标签 但无济于事 这是重现该问题的片段 import matplotlib matplotlib use TKAGG i
  • 如何让C语言成为上下文无关的?

    我知道C不是上下文无关语言 一个著名的例子是 int foo typedef int foo foo x 在这种情况下 词法分析器不知道是否foo第三行是一个标识符 或者typedef 我的问题是 这是唯一的原因吗 C a 上下文相关语言
  • ReportViewer 2010 无法计算表达式

    我的项目是ASP Net WebForms 4 0框架 使用ReportViewer 10 使用Local处理模式渲染本地RDLC报表 我的问题是我的报告中的许多表达式都没有计算 例如 我在报告的页脚中有一个文本框 其中包含简单的表达式 G
  • 如何从列表理解中获取多个列表作为单独的结果?

    假设我有这样的代码 def f x return 2 x x x x range 3 xlist ylist f value for value in x 我怎样才能巧妙地得到这样的结果 xlist 0 2 4 ylist 0 1 4 注意
  • 如何使用 ant 将 jar 文件包含到 Ear 文件的 lib 文件夹中?

    我有以下文件夹结构 project ear lib folder ProjectEJBClient jar META INF folder projectEJB jar My build xml包含以下行来创建 EAR 包
  • 如何使用 Knockout 3.0 取消对可观察数组的更改?

    我的数组发生了变化 我正在使用 Sanderson 最新的数组订阅方法来捕获添加 删除更改 在此订阅中 我打算捆绑并通过网络发送我的请求 如果请求因任何原因失败 我希望能够取消对集合的任何可能的更改 我已经验证该订阅在更改传播之前就已生效
  • Silverlight DependencyProperty.SetCurrentValue 等效项

    我正在寻找相当于 NET 4 的 SL4设置当前值 http msdn microsoft com en us library system windows dependencyobject setcurrentvalue aspxAPI
  • WiX - 在两个不同位置安装相同的文件

    在我的安装程序中 我有两个可选功能 它们是同一软件版本 5 和 6 的插件 他们将相同的文件 相同的名称 相同的二进制内容 安装到应用程序的 plugins 文件夹中 但我有以下错误 C Users FooBar Documents pro
  • 如何将环境变量从 docker-compose 传递到 NodeJS 项目中?

    我有一个 NodeJS 应用程序 我想要调整其大小 该应用程序由两部分组成 服务器部分 运行一个从数据库获取数据的 API 它在端口 3000 上运行 客户端部分 它从服务器部分调用 API 端点 它运行在端口 8080 上 这样 我的客户