在 docker-compose 中通过 tcp 与 Nest.js 微服务通信
问题:在 docker-compose 中通过 tcp 与 Nest.js 微服务通信 代码和更多文档可以在这个repo中找到 预期行为: 在使用和不使用 docker 运行应用程序时收到响应。 我得到了什么: 在没有 docker 但不在 docker 内运行应用程序时的响应。 我认为问题可能是: 该应用程序似乎在 docker 内部运行,但端口没有正确通过。 我已经尝试过的: 制作混合应用。发
·
问题:在 docker-compose 中通过 tcp 与 Nest.js 微服务通信
代码和更多文档可以在这个repo中找到
预期行为:
在使用和不使用 docker 运行应用程序时收到响应。
我得到了什么:
在没有 docker 但不在 docker 内运行应用程序时的响应。
我认为问题可能是:
该应用程序似乎在 docker 内部运行,但端口没有正确通过。
我已经尝试过的:
-
制作混合应用。发出一个 GET 请求,然后在内部传递给 TCP 微服务(这有效,但不是我想要的行为)。
-
在 docker 容器内运行
yarn start:dev
而不是yarn start:prod
。这没有做任何事情,但是再次使用相同的端口。 -
像这样暴露端口:(这什么也没做)
- target: 3000
published: 3000
protocol: tcp
mode: host
解答
正如这个问题(这个评论)解释
如果没有指定主机,NestJS 将绑定到 localhost
这导致我在 docker 中运行时无法连接该服务。因此,通过将主机设置为0.0.0.0
,我能够通过 TCP 进行连接。
完整示例:
const app = await NestFactory.createMicroservice(AppModule, {
transport: Transport.TCP,
options: {
host: '0.0.0.0',
port: 3000
}
});
更多推荐
已为社区贡献35539条内容
所有评论(0)