我正在尝试用mongodb atlas数据库对一个trapi应用程序进行dockerize。我面临的问题是/config中的数据库文件没有从.env文件读取变量。
.env文件
HOST=0.0.0.0
PORT=1337
DATABASE_HOST=xyz.mongodb.net
DATABASE_USERNAME=abc-admin
DATABASE_PASSWORD=12345xyz
ADMIN_JWT_SECRET=abcd1234
数据库连接代码
const {
DATABASE_HOST,
DATABASE_USERNAME,
DATABASE_PASSWORD
} = process.env;
module.exports = ({ env }) =>
({
defaultConnection: 'default',
connections: {
default: {
connector: 'mongoose',
settings: {
host: env('DATABASE_HOST', process.env.DATABASE_HOST),
srv: env.bool('DATABASE_SRV', true),
port: env.int('DATABASE_PORT', 27017),
database: env('DATABASE_NAME', 'xyz-dev'),
username: env('DATABASE_USERNAME', process.env.DATABASE_USERNAME),
password: env('DATABASE_PASSWORD', process.env.DATABASE_PASSWORD)
},
options: {
authenticationDatabase: env('AUTHENTICATION_DATABASE', null),
ssl: env.bool('DATABASE_SSL', true),
},
},
},
});
我已经尝试使用进程.env,并且在上面的文件中没有它。但是当我在构建后运行映像时,它显示以下错误
error连接到Mongo数据库时出错。URI没有主机名、域名和tld
你知道我在这里做错了什么吗?谢谢
对于你的问题,这里有一个更详细的回答(看了你的评论)。正在创建<代码>。env文件意味着您刚刚创建了它。它不会自动加载。这是在unix机器上使用的典型方式,但是与节点没有任何关系。
您需要做的是以某种方式解析该文件的内容(纯文本),将其转换为键值对并传递给节点。有许多包,Amit显示的一个是dotenv
。它为您完成所有工作,最后,您可以将变量注入process.env
。
最简单的方法是安装这个包(从npm)并按照描述使用它。但是如果你不能以任何方式修改代码,那么你可以简单地用脚本解析文件的内容,然后启动节点服务器。这是一个例子(取自npm脚本:read. env文件):
"scripts": {
"example": "some-lib --argument --domain $(grep DOMAIN .env | cut -d '=' -f2)"
}
这里的缺点是它不适用于各种操作系统,并且为此使用特定的库比您的手动脚本经过更多的测试。
一种选择是使用dotenv
,您需要导入dotenv
并运行
,然后才能开始使用env变量
所以改为
import dotenv from "dotenv";
dotenv.config()
// your code which user process.env
另一种选择是在您的操作系统级别定义所有这些环境变量。在unix上,您可以添加到~/. bashrc
文件
使用最新版本的6.2,对JBPM来说是相当新的。我正在尝试建立一个进程,通过该进程,我可以在打开某些(自定义)任务类型时调用遗留平台的REST API,并在它们完成时再次通过异步进程在未来的某个时间点。 在较高级别上,该过程应类似于: 旧版应用程序- 旧版应用程序- 我已经创建并注册了一个ProcessEventListener,并在AfterNode触发事件中创建了一个钩子来调用特定类型的节点。
我在从 docker-compose.yml 文件(版本 -3.7)读取 .env 变量时遇到问题,这里首先我解释我的文件夹和示例代码结构 我的文件夹结构 my_app > src config.py app.py requirements.txt 其他文件 Dockerfile docker-compose.yml .包封/包围(动词envelop的简写) .env文件 这是我的示例 .env
问题内容: 我正在使用Jenkins Build Flow插件来实现并行化。Groovy DSL执行某些文件操作。即使该选项设置为在特定从属服务器上运行作业,但DSL仍在主服务器上运行。这不是故意的。 有人可以告诉我如何限制DSL在指定的从站上运行吗?即使有一种方法可以通过DSL访问从文件系统,也应该可以。 通常,我们如何使用Groovy从Jenkins主节点访问节点从节点上的文件? 工作空间位于
我正在编写一个程序,在这个程序中,我必须使用Ubuntu中的IDE IntelliJ思想获得一些env变量,如JAVA_HOME。 我已经在/etc/profile和~/.bashrc中设置了所有的env变量,但是对于这样的代码,我不能访问我设置的env,因为代码只能访问/etc/environment中设置的变量。 等-配置文件
我正试图从我的Node js应用程序中的@microsoft/mgt库导入,遇到了一些问题-有人能帮我吗。我已经在使用Babel来使用ES6模块。 我错过了什么-我是新的节点:( 导出*from@microsoft/mgt-元素'; ^^^^^^ 语法错误:意外令牌导出在wrapSafe(内部/模块/cjs/loader.js:1053: 16)在模块。_compile(内部/模块/cjs/loa
问题内容: 我正在尝试在cgo中访问ac struct,但是要这样做 无法确定C.utmpx的名称种类 utmpx是结构 这是执行代码: 在utmpx.h文件中,有 我可以使用_PATH_UTMPX,但在使用UTMPX_FILE时也会收到相同的警告,为什么? 看来我无法访问在.h文件中声明的这些变量,该怎么办? 平台:macOS sirria,go 1.8 问题答案: 我必须定义_GNU_SOUR