python-3.x - Docker Flask 应用程序多次加载图像
问题描述
我的 Docker Flask 应用程序多次加载图像。该页面的加载速度非常慢,因为它发出了几个相同的请求。我可以在 Chrome 开发工具网络中看到它。该应用程序在我的开发环境中运行良好。我对 Docker 很陌生。
我认为这与IP和端口设置有关。我已经尝试了每个 IP/端口设置的几种排列,但收效甚微。要么我在任何地址都找不到我的应用程序,要么它可以工作,但会多次重新加载图像并且速度很慢。
烧瓶:
from grocery import create_app
app = create_app()
if __name__ == '__main__':
app.run(host ='0.0.0.0', debug=False)
Dockerfile:
FROM python:3.6.8-slim
WORKDIR /app
COPY . /app
RUN pip install --trusted-host pypi.python.org -r requirements.txt
EXPOSE 80
ENV NAME Grocery
CMD ["python", "run.py"]
码头工人命令:
docker build --tag=grocery .
# this is what has worked to get to the app running
docker run -p 5000:5000 --env-file .env grocery
然后在以下位置找到应用程序:
http://127.0.0.1:5000/
我希望该应用程序只运行一次并加载图像。我在这里不知所措。任何帮助将非常感激。
编辑: html/css/js 文件在我的本地机器上。图像位于 s3 和 CloudFront 中。不确定这是否会有所作为。
Edit2:添加更多代码,因为我能够找到问题。请看下面我的回答。
@main.route('/cdn/<path:filename>')
def custom_static(filename):
return redirect(urljoin(os.environ['CLOUDFRONT_CDN_MAIN'], filename))
.env 文件
CLOUDFRONT_CDN_MAIN="https://example.com"
解决方案
该问题是由烧瓶重定向和包含引号的 .env 文件引起的。在 pipenv shell 中运行时,我的代码运行良好。在 docker 中运行时,返回重定向将引号添加到重定向中并导致无限重定向循环。
我变了:
CLOUDFRONT_CDN_MAIN="https://example.com"
至:
CLOUDFRONT_CDN_MAIN=https://example.com
现在一切正常。
推荐阅读
- reactjs - 移动到另一个选项卡后更改输入值反应 js 挂钩
- ocr - Tesseract/gImageReader OCR:旧文本在单词之间缺少空格
- heroku - 失败的heroku前端部署
- c - RLE 实施每隔一段时间就会失败
- android - Activity 结果 API 的 ActivityResultLauncher launch() 方法不仅会调用合约的 createIntent() 方法,还会调用 parseResult()
- numpy - Keras、PyTorch 和 Numpy 中的批量标准化是不同的
- c++ - 为什么这种替换失败会再次产生错误?
- reactjs - 处理在前端 React 表单中将坐标插入到 geojson 的多部分表单
- javascript - 这个带有记忆(JavaScript)的斐波那契程序的运行过程是什么?
- reactjs - 使用 React redux/thunk 和 axios 连接 Firebase(来自 google)