当前位置: 首页 > 知识库问答 >
问题:

无法使用Docker中设置的环境系统变量从节点连接到MongoDB服务器

钱稳
2023-03-14

我试图建立一个Docker映像使用一个节点和mongob映像,但我不能设置环境变量从Dockerfile或docker作曲家。

Dockerfile:

从节点

运行mkdir/app WORKDIR/app COPY包。json/app

运行npm安装副本/应用程序

ENV MONGODB_URI 192.168.99.100/myapp

曝光3030

CMD[“npm”,“开始”]

docker-compose.yml:

版本:“2”

服务:

网状物:

build: .

volumes:

  - ./:/app

ports:

  - "3030:3030"

environment:

  - MONGODB_URI="192.168.99.100/myapp"

links:

  - "mongo"

蒙戈:

image: "mongo"

ports:

  - "27017:27017"

volumes_from:

  - mongodata

蒙哥达塔:

image: tianon/true

volumes:

  - /data/db

我试图从配置对象内部获取MONGODB_URI。控制台。log返回预期结果,但我仍然得到一个错误。

类配置{

constructor() {
    this.port = process.env.PORT || 3030;
    console.log(process.env.MONGODB_URI);
    this.databaseUrl = process.env.MONGODB_URI || 'localhost/myapp';
}

我得到的错误是:

错误:模块上的连接字符串web_1|中未提供主机名或主机名。导出(/app/node\u modules/mongodb/lib/url\u parser.js:24:11)

如果我尝试直接使用URL,而不依赖于环境变量,它工作得很好,并且我得到了一个连接。

共有1个答案

翟展
2023-03-14

很显然,我刚刚得到了我的橡皮鸭式回答。

问题在于'-MONGODB_URI=“192.168.99.100/myapp'。该值不应用引号括起来。

我将其设置为“MONGODB_URI=192.168.99.100/myapp”,它工作正常。

 类似资料:
  • 我无法从环境变量中获取值。有很多类似的问题。但没有一个对我有用 应用程序.属性 系统变量 但当我硬编码时,它工作得很好。 更新

  • 我在这个repo中用2个图像制作了3个docker容器,使用MongoDB公共图像制作了1个。我使用 < code>docker-compose.yaml是: 但是MongoDB无法与节点服务器连接,并给出了以下错误: < code>backend/db.js的代码: 添加mongouri作为环境变量后的终端输出: 新错误:

  • 我试着去看一本教程,上面写着: 有几种方法可以加载凭据。 null 根据一些谷歌搜索,我似乎需要设置中的变量?如何以及在何处设置这些凭据?请举例。

  • 问题内容: 是否可以在log4j xml配置文件中引用系统环境变量(与Java系统属性相反)? 我希望能够执行以下操作: 并使其从系统环境变量中获取,因此我可以避免必须通过-D参数传递太多内容。 问题答案: 仅在log4j 2.X中记录了此语法,因此请确保使用正确的版本。它不适用于1.X版本。

  • 问题内容: 我正在尝试遵循一个教程,它说: 有几种加载凭证的方法。 从环境变量加载, 从磁盘上的JSON文件加载, 密钥需要如下: …这意味着,如果您正确设置环境变量,则根本不需要管理应用程序中的凭据。 基于一些谷歌搜索,看来我需要将变量设置为?如何以及在哪里设置这些凭据?请举例。 问题答案: 使用环境变量(在这种情况下)将凭据传递给您的应用程序。并且都可以分别从和访问。您无需对其进行编辑,只需访

  • 问题内容: Java是否具有默认的“系统环境变量”,当我们设置它时将始终读取/附加它?/ etc似乎仅适用于TOMCAT / JBOSS等。 我不想通过Java系统属性(通过-Dprop1 = value1 -Dprop2 = value2传递)来设置它,因为它涉及shell / batch脚本。 它应可跨操作系统使用,例如Windows中的双击jar文件。 它应该可以在不同的JRE(Sun,IB