Docker网络/服务问题

时间:2018-10-04 19:49:54

标签: docker flask docker-compose

我有一个包含以下服务的docker-compose文件

service:
service1-dev:
(filled with the good config)
network : 
 custom_network
 ipv4_address:167.34.0.5
service2-test:
(filled with the good config)
network : 
 custom_network
 ipv4_address:167.34.0.3
service3-request:
(filled with the good config)
network : 
 custom_network
 ipv4_address:167.34.0.2

networks:
custom_network:
driver: bridge
ipam:
  config:
    - subnet: 167.34.0.0/16

一切正常,我的service1-dev在0.0.0.0:8081上运行 当我的开发容器运行时,我可以在浏览器中轻松访问以下内容:http://localhost:8081/test 我收到我的json

问题出在我正在运行我的service3-request,该请求应该向我的service1-dev发送一些请求,但是该请求无法正常工作。

我不明白为什么两个容器都不在同一个网络167.34.0.0/16中,它们都可以ping通彼此,但是我试图这样做: 卷曲http://localhost:8081/test 错误502

OR

卷曲http://167.34.0.5:8081/test 什么都不做

但是它不起作用。

所以我不明白如何对我的所有容器执行ping操作,但是我在致电服务时无法收到json

2 个答案:

答案 0 :(得分:0)

您是否有权访问某些日志文件以检查502错误。

我想到了,运行netstat -tanp | grep LISTEN

这应该给你类似的东西,其中::: *表示任何人都可以连接到该端口。

tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2868/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      3568/master
tcp        0      0 :::42266                    :::*                        LISTEN      2794/rpc.statd
tcp        0      0 :::10080                    :::*                        LISTEN      25226/java

根据我们的讨论-出于安全原因,有可能以这种方式制作烧瓶。 这样,您应该安装本地Web服务器并将其配置为服务器Flask应用程序。请注意,这是在生产环境中运行应用程序的首选方式!

我建议使用nginx,因为它是免费的,非常轻便,超级快速且易于安装。 https://nginx.org/

顺便说一句,在这里阅读该主题:What does "app.run(host='0.0.0.0') " mean in Flask

答案 1 :(得分:0)

所有要做的就是取消我的代理并在我的请求curl http://service1-dev:8081/test中使用容器名称

现在一切正常!