node.js - 如何在运行 docker 容器时更新配置文件(.env 文件)

标签 node.js shell docker

我已经创建了一个nodejs应用程序并按照此链接构建了docker镜像 Dockerizing a Node.js web app

但是,我还使用配置文件(.env 文件),我可以在其中维护所有环境变量并使用 process.env.<Variable_name> 访问它们.

我的server.js文件看起来像这样。

'use strict';

const express = require('express');
require('dotenv').config()

// Constants
const PORT = process.env.PORT | 8080;
const HOST = process.env.HOST;

// App
const app = express();
app.get('/', (req, res) => {
  res.send('Hello world\n');
});

app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);

我的 .env 文件是这个。

HOST=10.20.30.40
PORT=8080

我可以将我的 IP 地址和端口更改为任何内容,而无需更改 server.js 中的任何代码。与此类似,我想在将其构建为 docker 镜像时更新 .env。

这是我的 Dockerfile

FROM node:carbon
WORKDIR /usr/src/app
COPY package*.json ./    
RUN npm install
COPY . .
COPY .env .    
EXPOSE 8080
CMD [ "npm", "start" ]

我知道我可以在构建镜像时通过提供 --build-args 来更新 .env 文件。但每次如果需要在 .env 中进行更改,我都必须重建镜像并部署它。因此,我想在运行镜像或容器时更新 .env 文件。

在下面的命令中,有没有办法提供一些参数,以便它会更新 docker 中的 .env 文件。

docker run -p 49160:8080 -d <your username>/node-web-app

最佳答案

您可以使用 -v 将目录添加到 docker

docker run -v /Path/To/The/Env/file:/env-file-directory -p ...

然后使用名称 /env-file-directory 将文件定位到 Docker 内的链接目录中

关于node.js - 如何在运行 docker 容器时更新配置文件(.env 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50646625/

相关文章:

node.js - 无效的架构配置 : `model` is not a valid type within the array `characters`

linux - 获取上次执行命令的 PID(无背景)

在bash脚本中输入MySQL密码

docker - 如何在运行时用另一个 Docker 数据卷替换?

node.js - 如何使用 Google Analytics 跟踪 node.js RESTful 服务的使用情况?

javascript - 如何在nodejs集群之间共享变量?

node.js - 创建 NPM 链接实用程序 - 从下到上跟踪依赖关系

shell - set -e 和 exec "$@"对 docker 入口点脚本有什么作用?

node.js - 使用 docker-compose 处理 Node 模块

docker - Docker Compose v3- “Unsupported config option for volumes:”