在由通过 docker-compose 运行的多个微服务组成的应用程序中,我需要一种方法来从一个容器(app
通过 flask 和请求)直接向另一个(chart
/django)发出请求:
这是我正在尝试的简化版本。
路线.py:
@APP.route('/post_data', methods=['POST'])
def post_data():
post_data = request.get_json()
response = requests.post('http://chart_app_1:8080/json/', data=post_data)
return response.text
我得到的响应是一条错误消息:
django.core.exceptions.DisallowedHost: Invalid HTTP_HOST header: 'chart_app_1:8080'. The domain name provided is not valid according to RFC 1034/1035
我能够向运行 Flask 应用程序的其他容器发出这种请求,没有任何问题。不过,我无法控制我们是否将 Django 用于这个特定的微服务。
看来这可能是因为主机名中有下划线:see this post .有没有解决的办法?似乎必须可以在容器之间进行简单的请求。
最佳答案
在 docker-compose 文件中,修改服务名称以避免 Django 服务中的下划线。
这是我所知道的避免错误的唯一方法,因为它不是 Docker 限制而是 Django 问题。
关于django - 无效的 HTTP_HOST header : The domain name provided is not valid -- requests to dockerized django app using container name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52997543/