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

时间:2018-06-01 15:21:47

标签: 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

1 个答案:

答案 0 :(得分:0)

您可以使用-v

将目录添加到泊坞窗
docker run -v /Path/To/The/Env/file:/env-file-directory -p ...

然后使用名称/env-file-directory

将文件定位到泊坞窗内的链接目录中