【发布时间】:2023-03-09 02:05:01
【问题描述】:
我有一个 Flask 应用程序在 Paperspace 服务器上使用 Gunicorn 作为 Docker 容器运行 -
Dockerfile
FROM ubuntu:18.04
FROM python:3
RUN apt-get update -y && apt-get install -y python-pip python-dev
COPY . /backend
WORKDIR /backend
RUN pip3 install -r requirements.txt
EXPOSE 8000
CMD gunicorn --timeout 10000 --workers 4 --log-level debug --bind 0.0.0.0:8000 wsgi:app
app.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, request
UPLOAD_FOLDER = '/uploads'
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/upload_file', methods=['GET', 'POST'])
def upload_file():
return "it works fine"
wsgi.py
from api import app
if __name__ == '__main__':
app.run()
我使用它运行它
sudo docker run -it -p 8000:8000 myFlaskApp:1.28
在从 Postman 触发 API (/upload_file) 时,我得到了
Error: socket hang up
但是,这个 API 在 localhost (http://0.0.0.0:8000) 上运行良好
【问题讨论】:
-
我无法使用上面的代码 sn-ps 重新创建您的问题。有一些事情首先阻止了 docker 容器的构建(api 文件夹不存在,所以我从 api 中删除;wsgi 文件是多余的,所以我删除了它并将 if 主检查放在底部app.py; 更改了 docker CMD 以从 app:app 加载应用程序)。当我解决这些问题时,应用程序按预期运行。我怀疑这是对更大项目的简化,实际问题没有在上面的代码中表示。
标签: python docker api flask gunicorn