bounty 3天后到期。这个问题的答案有资格获得+50的声誉奖励。ChanGan正在寻找一个规范的答案。
我正在尝试设置一个简单的项目对接POC。包括ANGLE、EXPRESS、NodeJS和MongoDBMap集。
ANGLE在4200和NodeJS 3000上运行
https://github.com/changan1111/UserManagement
它在本地相同的设置下工作得很好。
当我去找码头的时候?
我看到节点js已启动并正在运行。
当我看到文件列表时,我看到的都是好的。
当我使用http://localhsot/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:
2条答案
按热度按时间3duebb1j1#
你的问题并不清楚,但根据你提供的图片,你的Angular 应用程序似乎无法在
127.0.0.1
中到达你的Express后端。您将
http://localhost:3000
配置为您的API端点,但请注意,从Docker的Angular 来看,localhost
指的是容器本身,可能与您的实际主机不同。要解决该问题,您可以向
Express
指示它应该使用0.0.0.0
侦听每个网络接口:nodejs guide documentation中也举例说明了该解决方案。
此外,请尝试将
environment
文件中的Url
变量调整为地址http://localhost
,而不指定端口,即使用端口80
:根据您上传到Github中的存储库的代码,您的应用程序似乎侦听端口3000
,但在您的屏幕截图中,您肯定使用了端口80
。这背后的原因是,如果express
同时服务于您的Angular SPA和您的API,并且您能够分别使用http://localhost/read
和http://localhost/user
从您的主机联系这两个东西,那么按照建议将您的Url
变量调整为http://localhost
可能会起到作用。ws51t4hk2#
在运行您的容器时,您是否尝试过这样暴露您的端口?
docker run -p 4000:4000 container_name
(假设此处为Linux主机)或者只是
也许是
docker run --network="host" container_name
?然后通过
localhost:4000
从Docker内部或外部的任何服务访问。容器的内部
localhost
将通过这种方式与实际主机的localhost
匹配。这有一些缺点,但我假设您不是在生产环境中运行它,所以它应该不会有太大影响。目前还不清楚你是否正试图从Docker外部访问你的Dockeralized应用程序。您的后端和前端是否共享同一个容器?它们都是集装箱式的吗?
EXPOSE
只允许Docker的内部应用程序找到该端口IIRC。您需要指定要向主机公开的端口。