使用docker部署flask应用程序失败,原因是“context.load\u cert\u chain('cert.pem','key.pem')filenotfounderror:[errno 2]”

hfyxw5xn  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(313)

我有一个用docker部署的flask程序。我希望它是https协议启用。使用的ssl自签名证书命令: openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365 flask 应用程序(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"]
pbpqsu0x

pbpqsu0x1#

ADD app.py /app.py

但是不要

ADD cert.pem /
ADD key.pem /

因此它们在容器中不可用,因此无法找到文件。
还有其他可以改进的地方(比如使用 requirements.txt 文件,使用子文件夹,等等),我建议阅读这个https://docs.docker.com/language/python/build-images/

相关问题