我有一个包含以下服务的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
答案 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
中使用容器名称
现在一切正常!