Node.js 如何在执行docker run命令时将env变量传递给json文件

Node.js 如何在执行docker run命令时将env变量传递给json文件,node.js,json,docker,variables,dockerfile,Node.js,Json,Docker,Variables,Dockerfile,我正在执行下面的docker run命令来运行基于nodejs的docker容器 docker build -t app . docker run -it app docker run-p8080:7000--env db_url=10.155.30.13自动化:v1.0.3 我试图通过使用容器中单独的配置文件来访问这个env变量。配置文件为json格式,如下所示 { "db_host": "${process.env.db_url}", } 在我的nodejs代码中,我访问这个db_主机

我正在执行下面的docker run命令来运行基于nodejs的docker容器

docker build -t app .
docker run -it app
docker run-p8080:7000--env db_url=10.155.30.13自动化:v1.0.3

我试图通过使用容器中单独的配置文件来访问这个env变量。配置文件为json格式,如下所示

{
"db_host": "${process.env.db_url}",
}
在我的nodejs代码中,我访问这个db_主机值以将主机IP添加到侦听器。但是,当执行上述代码时,docker容器一打开就被关闭。但是,如果我将json文件值替换为如下所示,它工作正常,并且我的容器正在侦听,如下所示。有人能帮我传递值并在json文件中访问它吗

{
"db_host": "10.155.30.13",
}

你可以在应用程序中获得价值

const db_host = process.env.db_url || "10.155.30.13"

不要从json文件中读取它。

您不能在json文件中替换环境变量,您可以使用或,这将有助于在配置文件中有一些默认值,并从环境变量中重写这些值

创建默认配置
vi config/default.json

{
"db_host": "10.155.30.13"
}
现在先从ENV读取,否则从config中选择默认值 app.js

现在运行docker容器

docker build -t app .
docker run -it app
构建容器

docker build -t app .
docker run -it app
运行容器

docker build -t app .
docker run -it app
控制台输出

10.155.30.13
192.168.0.1
现在我们要覆盖这个默认值

docker run -e DB_HOST=192.168.0.1 -it app
控制台输出

10.155.30.13
192.168.0.1

我的朋友,这很有效。但现在还有另一个问题。如果我试图从我的Docker compose文件和config.js文件中的env变量发送DB IP,则我的容器将使用0命令退出。但是如果我用上面的方法,效果很好。你能告诉我原因吗?