首页 > 解决方案 > 使用 Docker 部署烧瓶应用程序失败并显示“context.load_cert_chain('cert.pem','key.pem') FileNotFoundError: [Errno 2]”

问题描述

我有一个使用 docker 部署的烧瓶程序。我希望它启用 https 协议。使用的 SSL 自签名证书命令: openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365

烧瓶应用程序(app.py)具有以下内容:

from flask import Flask, jsonify
import ssl

application = Flask(__name__)
application.config.from_object(__name__)

context = ssl.SSLContext()
context.load_cert_chain('cert.pem','key.pem')

@application.route('/')
def default():
    return 'hello world \n'
if __name__ == '__main__':
    application.run(host='0.0.0.0', debug=False, ssl_context = context) 

我已将两个 pem 文件复制到同一目录中。我已经尝试将 pem 文件放在 /tmp 文件夹中。仍然有同样的问题。

我用来构建应用程序映像的 Docker 文件:

FROM *orgs private image*
RUN /path/bin/pip install flask
ADD app.py /app.py
ENTRYPOINT ["python", "app.py"]

标签: pythondockersslflask

解决方案


ADD app.py /app.py

但不要

ADD cert.pem /
ADD key.pem /

所以它们在容器中不可用,因此 FileNotFound。

可以进行其他改进(例如使用requirements.txt文件、使用子文件夹等),我建议阅读此https://docs.docker.com/language/python/build-images/


推荐阅读