gpt4 book ai didi

python - 如何使用 https 而不是 http 启动 Dockerized Python Flask 应用程序?

转载 作者:行者123 更新时间:2023-12-04 22:36:41 25 4
gpt4 key购买 nike

我有一个使用 开发的 REST api 服务器Python & Flask 框架 并使用 部署在主服务器中 docker .当我通过 sudo docker-compose build 构建和启动 docker 容器时& sudo docker-compose up , docker 容器从 http://0.0.0.0:5000/ 开始或 localhost并使用端口 5000 .
这在 non-ssl 中运行良好环境或浏览器或域。但最近我的主要网站(假设 www.example.com )开始使用 SSL证书 .要与主站点通信,我必须为我的 提供服务。 api https而不是 http .
现在我正在尝试使用此代码以 https 模式启动服务器,但出现了一些错误。
我的代码:

import ssl
ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
ctx.load_cert_chain('certificate.pem', 'privateKey.pem')

.
.

if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0',ssl_context=ctx)
这是我的错误:
enter image description here
在 https 模式下启动 Docker 支持的 Python Flask 应用程序的正确程序是什么?

最佳答案

经过 2 天的繁琐工作,我找到了正确的解决方案。我的域在实现 ssl https 时有 2 个文件。一个是 mydomain_com.crt 文件,另一个是 private.key
我在服务器的主目录中找到了这两个文件。当我使用 Apache 时,我在 /etc/var/www/html 文件夹中找到了这些文件。
我复制了2个文件如下:

  • mydomain_com.crt 文件复制许可证并粘贴到 文本文件 然后将其重命名为 certificate.pem
  • private.key 复制许可证并粘贴到 文本文件 然后将其重命名为 privateKey.pem

  • 然后我在我的 Flask 应用程序中使用了我的域的默认 ssl 证书,如下所示:
    import ssl
    ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
    ctx.load_cert_chain('certificate.pem', 'privateKey.pem')
    .
    .
    .
    if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', ssl_context=ctx)
    并在我的 Dockerfile 中暴露了 2 个端口 ,如下所示:
    FROM python:3
    WORKDIR /usr/src/app
    COPY requirements.txt ./
    RUN pip install --no-cache-dir -r requirements.txt
    COPY . .
    CMD [ "python", "app.py" ]
    EXPOSE 80
    EXPOSE 443
    重新启动后,我的 Dockerized Flask 应用程序现在可以使用我的域的默认 ssl 证书并正确地提供 API。
    示例: https://example.com:5000/getUsers

    关于python - 如何使用 https 而不是 http 启动 Dockerized Python Flask 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65901178/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com