【发布时间】:2022-10-25 12:54:42
【问题描述】:
我正在尝试通过一个简单的项目为 docker 设置 poc。它包括 angular、express、nodejs 和 mongodb atlas。
角度在 4200 和 nodejs 3000 上运行
https://github.com/changan1111/UserManagement
它在本地相同的设置中工作正常..
当我去码头工人?
我看到节点 js 已启动并正在运行。
当我看到文件列表时,我看到一切都很好。
当我去 http://localhost/user 它返回值
但是当我从浏览器读取值时,它显示
我尝试了一些解决方案,但所有解决方案都返回失败的相同响应。这有什么问题..任何人都可以看看这个,让我知道设置有什么问题。
app.use(cors());
/*
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "req.headers.origin"); // update to match the domain you will make the request from
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods", "DELETE,PUT,GET,POST");
next();
});*/
/*
app.use(cors({
"origin": ['http://localhost:3000'],
"methods": "GET,PUT,POST",
"preflightContinue": false,
"credentials": true
}));*/
也尝试使用 IP 地址http://192.168.0.103/,但没有变化 Dockerfile:
【问题讨论】:
-
首先,您必须在 Dockerfile 中将 EXPOSE 放在 CMD 之前
-
那是复制粘贴错误。在 CMD 之前给出 EXPOSE
-
请用真实代码替换代码图像。
-
在您的浏览器中,您调用的是
localhost:3000/user而不是localhost/user。而您的问题是,您的应用程序可以通过80而不是3000访问? -
您的映射端口(您可以尝试从外部访问的端口)是否与暴露的端口匹配?通常你会想要在运行一个暴露了一些端口的容器时指定端口。