我在访问另一个容器中的一个容器路线时遇到问题。例如,我有两个微服务,分别称为user-service和api-gateway。我正在尝试访问api-gateway中的用户服务路由。
我的api-gateway文件可能如下所示
const userServiceProxy = httpProxy(http://localhost:8093);
this.app.post('/admin/register', async(req, res) => {
userServiceProxy(req, res);
});
Run Code Online (Sandbox Code Playgroud)
api-gateway在端口8080上运行
我的用户服务文件可能如下所示
app.post('/admin/register', function (req, res) {
res.send('POST request')
})
Run Code Online (Sandbox Code Playgroud)
当我通过带有8080端口的api网关访问路由时,我无法调用该路由,但是当我尝试使用8093端口访问时,我可以看到结果。
我的docker-compose文件可能如下所示
version: '3'
services:
api-gateway:
container_name: api-gateway
build: './api-gateway'
ports:
- "8080:8080"
links:
- user-service
user-service:
build: ./user-service
container_name: user-service
ports:
- "8093:8093"
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,在此先感谢!
localhost 指容器内的本地主机,而不是主机系统。
使用Docker Networks并替换localhost为服务名称,例如api-gateway。
如果容器在同一网络中,则地址http://api-gateway:8093应该可用。
另一种方法是在网络模式下运行容器host。这种隔离较少,但是地址localhost起作用了,因为容器现在在docker deamon的接口上运行
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |