【发布时间】:2018-07-23 18:44:57
【问题描述】:
我有一个带有 SSL 授权的烧瓶应用程序。 这是我的 run.py:
#!flask/bin/python
from app import app
import ssl
ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
ctx.load_cert_chain('sertnew/se-emulator.crt', 'sertnew/se-emulator.key')
app.run(debug=True, host='127.0.0.1', port=5000, ssl_context=ctx)
在我的机器上,我简单地运行它
python run.py
然后我在 chrome 中打开 https://localhost:5000 并且它可以工作(有非安全连接的消息,但对我来说没关系)
现在我正试图让它在 Docker 容器中工作。 我有一个像这样的 Dockerfile:
FROM python:3.5-slim
RUN apt-get update && apt-get install -y python3-pip
COPY . /storage-emulator
WORKDIR /storage-emulator
RUN pip3 install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["run.py"]
并尝试以不同的方式运行它。 我可以看到“Running on https://127.0.0.1:5000/(按 CTRL+C 退出)”消息,但无法在浏览器中打开该页面。我做错了什么?
【问题讨论】:
-
您能否进一步扩展“无法在浏览器中打开页面”?浏览器显示的错误是什么?
-
运行 docker 镜像的命令是什么?
-
我用 docker run -itp 5000:5000 my_app 运行它
-
在浏览器中我看到无法访问此站点
localhost unexpectedly closed the connection. ERR_CONNECTION_CLOSED -
我还有一个 python 脚本发布数据,它也使用 SSL,当我在没有 docker 的情况下运行应用程序时它工作正常。使用 docker 我收到错误
requests.exceptions.SSLError: HTTPSConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /post_data (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:748)'),))