Python 在Docker中使用Starlete实现SSL

Python 在Docker中使用Starlete实现SSL,python,docker,ssl,docker-compose,starlette,Python,Docker,Ssl,Docker Compose,Starlette,我有一些应用程序,是用Python3.7编写的,运行在ASGI和Starlette上。我需要应用程序只接受HTTP请求 我已经通过docker compose打开了端口443和80,并添加了HTTPSRedirectMiddleware,以确保所有连接都将重定向到https docker compose version: '3.4' services: api: image: api stop_grace_period: 30s environment:

我有一些应用程序,是用Python3.7编写的,运行在ASGI和Starlette上。我需要应用程序只接受HTTP请求

我已经通过docker compose打开了端口443和80,并添加了HTTPSRedirectMiddleware,以确保所有连接都将重定向到https

docker compose

version: '3.4'
services:
  api:
    image: api
    stop_grace_period: 30s
    environment:
      API_VERSION: $API_VERSION
    deploy:
      mode: replicated
      replicas: 1
      restart_policy:
        condition: on-failure
      update_config:
        delay: 1s
        monitor: 10s
        order: stop-first
        parallelism: 1
        failure_action: rollback
    ports:
      - 80:80
443:443
networks:
    default:
        driver: overlay
蟒蛇

def create_app():
    app = Starlette()
    app.add_exception_handler(HTTPException, error_handler)
    app.add_middleware(ServerErrorMiddleware, handler=server_error_handler)
    app.add_middleware(HTTPSRedirectMiddleware)
    app.add_route("/", calculate, methods=["POST"])
    return app
但当我试图通过本地主机上运行的容器上的邮递员发送POST请求时,我会收到无法连接的错误消息,在应用程序的日志中,我会收到错误消息

[WARNING] Invalid HTTP request received.

您需要为HTTPS指定SSL证书和私钥才能工作

$gunicorn--keyfile=./key.pem--certfile=./cert.pem-k uvicorn.workers.UvicornWorker示例:app
您可以在此处找到更多信息:

您需要指定SSL证书和专用密钥,HTTPS才能工作

$gunicorn--keyfile=./key.pem--certfile=./cert.pem-k uvicorn.workers.UvicornWorker示例:app
您可以在此处找到更多信息:

[WARNING] Invalid HTTP request received.