node.js - 如何在 docker run 中设置环境变量
问题描述
我正在尝试在我的 docker run 命令中设置环境变量。
这是我的 Dockerfile:
FROM node:8.16.0-alpine
WORKDIR /Users/Marc/Dev/GreenPool/docker-test
COPY test.js ./
COPY . .
RUN ln -s /usr/bin/nodejs /usr/bin/node
ENTRYPOINT ["node", "./test.js", "data"]
这是我的命令:
docker run marcvander/node-test:latest -e "data=2"
控制台输出:
Undefined
NaN
NaN
如果我在 Dockerfile 中设置环境变量,它可以工作:
ENV data=3
控制台输出:
3
3
6
我的 test.js 文件:
#!/usr/bin/env node
var data = process.env.data;
console.log(data);
data = Number(data);
function addTwoNumbers(data) {
console.log(data);
console.log(data + data);
return data + data;
}
addTwoNumbers(data);
解决方案
该-e
标志需要在图像名称之前。
要模拟您的ENTRYPOINT
ed Dockerfile:
$ docker run -it --entrypoint=printenv ubuntu:16.04 -e foo=bar
printenv: invalid option -- 'e'
参考
$ docker run -it --entrypoint=printenv -e foo=bar ubuntu:16.04
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=0d4ef96a831d
TERM=xterm
foo=bar
HOME=/root
推荐阅读
- reactjs - 如何修复错误--->“DeepMap”类型上不存在属性“名称”
- python - 测试用例的并行执行不适用于 pytest-html-reporter 报告
- google-fit - 使用多个传感器时,Google Fit REST API 步骤结果与应用编号不匹配
- pandas - 尝试使用 excel pandas 读取数据...并在多个文件中出现一致的错误
- binding - 从 Svelte 中的父组件与 Slot 通信
- r - 使用登录表单(shinyauthr 包)运行 Shiny 应用程序时出错:`filter()` 输入 `..1` 出现问题。我输入`..1`
- firebase - 如何以 Firebase 作为后端部署 expo react 本机应用程序?
- python - 向 docker 容器中的站点发送 HTTP 请求
- java - 使用多线程卖票但为什么没有错误
- mongodb - 如何连接 zend - laminas 和 MongoDB