I have a flask program deploying using docker. I want it to be https protocol enabled.
SSL self signed certificate command used:
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
The flask app(app.py) has following:
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)
I have copied both the pem files in the same directory. I already tried with placing the pem files in /tmp folder. Still having same issue.
The Docker file I am using to build image of the app:
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 /
so they’re not available within the container, thus the FileNotFound.
There are other improvements that can be made (like using
requirements.txt file, using subfolders, etc), I recommend reading this https://docs.docker.com/language/python/build-images/
Answered By – msanford