python - 使用 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"]
解决方案
你
ADD app.py /app.py
但不要
ADD cert.pem /
ADD key.pem /
所以它们在容器中不可用,因此 FileNotFound。
可以进行其他改进(例如使用requirements.txt
文件、使用子文件夹等),我建议阅读此https://docs.docker.com/language/python/build-images/
推荐阅读
- android - 将片段内容添加到活动的查看寻呼机时不可见?
- jenkins - Jenkins 声明性管道不正确的 svn 更改列表
- arduino-uno - 如何通过 BLE HC-08 从单个字符构建字符串?
- python - 如何从熊猫数据框中列出成对的连续行?
- python - OpenPyXL - 以相反的顺序迭代行,从 ws.max_row 到 1
- amazon-web-services - AWS Lambda CloudTrail 事件 SAM 映射
- c++ - CPP:定义模板时泛型数据类型T是一个类吗
- c# - 用于在 GUI 之间切换的占位符
- javascript - 数组元素未定义的时序问题?
- javascript - 按钮上的文本颜色会更改,但并非每次都更改