我正在尝试在构建期间在docker容器中设置环境变量但没有成功.使用run命令时设置它们有效但我需要在构建期间设置它们.
Dockerfile
FROM ubuntu:latest
ARG TEST_ENV=something
Run Code Online (Sandbox Code Playgroud)
命令我正在使用构建
docker build -t --build-arg TEST_ENV="test" myimage .
Run Code Online (Sandbox Code Playgroud)
运行
docker run -dit myimage
Run Code Online (Sandbox Code Playgroud)
我正在使用检查可用的环境变量
docker exec containerid printenv
Run Code Online (Sandbox Code Playgroud)
结果是
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=e49c1abfd58b
TERM=xterm
no_proxy=*.local, 169.254/16
HOME=/root
Run Code Online (Sandbox Code Playgroud)
TEST_ENV不存在
我正在学习 docker 初学者课程(https://www.youtube.com/watch?v=3c-iBn73dDE&t=4384s),我认为它做得很好。
作为课程的一部分,应用程序与节点服务器和 js 前端放在一起,与用于 mongo db 的 docker 容器和用于持久性的 mongo express 通信。
可以在https://gitlab.com/nanuchi/techworld-js-docker-demo-app/-/blob/master/app/server.js找到节点应用程序。包含:
MongoClient.connect("mongodb://admin:password@mongodb:27017",
function (err, client) {
if (err) throw err;
var db = client.db('user-account');
userObj['userid'] = 1;
Run Code Online (Sandbox Code Playgroud)
我在 chromebook 上的 ubuntu 20.04 上运行了 2 个 docker 容器(截图)。当我运行时:
11@penguin:~/techworld-js-docker-demo-app/app$ nodejs server.js
app listening on port 3000!
Run Code Online (Sandbox Code Playgroud)
但是当我打开浏览器到 localhost:3000 时,我得到:
(node:2716) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover …Run Code Online (Sandbox Code Playgroud)