首页 > 解决方案 > 为什么 docker 容器只能使用 0.0.0.0 连接?

问题描述

我有一个 docker-compose 包含两个服务:

Python 服务有一个端点,它接收一个带有 JSON 有效负载(一个对象)的 POST 请求,其中包含一个$schema允许服务对其进行验证的属性:

"$schema": "https://localhost/schemas/schema.json"

有趣的是,该模式已在服务本身上设置,这意味着传入的属性(如 URL 所示)正在由它提供服务。当服务尝试针对无法 GET(请求上面的 URL)的模式验证有效负载时,就会出现问题。

我的结论

jsonschema.exceptions.RefResolutionError: HTTPSConnectionPool(host='localhost', port=443): 
Max retries exceeded with url: /schemas/schema.json 
(Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f7c26d9f5b0>: 
Failed to establish a new connection: [Errno 111] Connection refused'))
jsonschema.exceptions.RefResolutionError: HTTPSConnectionPool(host='nginx', port=443): 
Max retries exceeded with url: /schemas/schema.json 
(Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1108)')))

但是,我不明白为什么它会起作用。以及为什么服务能够通过代理发出请求,但我无法在 Python 服务容器内简单地使用 CURLcurl --insecure https://0.0.0.0/...

任何有助于找出真正原因或更好地理解网络应该如何在这里工作的帮助将不胜感激。

标签: dockernginxnetworking

解决方案


推荐阅读