在docker-compose

时间:2019-11-16 16:11:07

标签: docker tcp docker-compose microservices nestjs

代码和更多文档可在此repo

中找到

预期的行为:

在有和没有docker的情况下运行应用程序时都会收到响应。

我得到的:

在没有docker但不在docker内部运行应用程序时的响应。

我认为问题可能是:

该应用似乎在docker内部运行,但端口无法正确通过。

我已经尝试过的方法:

  • 制作混合应用。发出一个GET请求,然后将其内部传递给TCP微服务(这有效,但不是我想要的行为)。
  • 在docker容器而不是yarn start:dev内运行yarn start:prod。这什么也没做,但是在相同的地方再次使用了端口。
  • 像这样暴露端口:(这没做)
- target: 3000
  published: 3000
  protocol: tcp
  mode: host

2 个答案:

答案 0 :(得分:2)

this issuethis comment)解释

  

如果未指定主机,则NestJS将绑定到本地主机

这使我无法在docker中运行该服务时与其连接。因此,通过将主机设置为0.0.0.0,我可以通过TCP进行连接。

完整示例:

const app = await NestFactory.createMicroservice(AppModule, {
  transport: Transport.TCP,
  options: {
    host: '0.0.0.0',
    port: 3000
  }
});

答案 1 :(得分:0)

尝试将其添加到您的撰写中

myservice:
  expose:
    - "3000"
  ports:
    - "3000:3000"