【问题标题】:Flask API endpoint is not accessible from docker [duplicate]无法从 docker 访问 Flask API 端点 [重复]
【发布时间】:2020-12-13 08:08:00
【问题描述】:

我有一个使用 SQLLite 数据库的简单烧瓶应用程序。

这是我的app.py 代码

from flask import Flask
from flask_restful import Api
from flask_jwt import JWT
from datetime import timedelta

from db import db
from security import authenticate, identity
from resources.user import UserRegister
from resources.product import Product, ProductList


app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.secret_key = '@hsgvTyb@3gd###123'
api = Api(app)


@app.before_first_request
def create_tables():
  db.create_all()


jwt = JWT(app, authenticate, identity)  # /auth
app.config['JWT_EXPIRATION_DELTA'] = timedelta(seconds=1800)

api.add_resource(Product, '/product/<string:name>')
api.add_resource(ProductList, '/products')
api.add_resource(UserRegister, '/register')


if __name__ == '__main__':
  db.init_app(app)
  app.run(port=5000, debug=False)

DockerFile 如下:

FROM python:3
ADD app/ /app
WORKDIR /app
RUN apt-get update
RUN pip install -r requirements.txt
CMD python app.py

docker-compose.yml 如下:

version: "2"
services:
  app:
    container_name: test-146957-app
    build:
      context: ../
      dockerfile: deployments/app/Dockerfile
    ports:
      - "5000:5000"

现在,当我执行 docker-compose up 命令时,它显示容器正在运行,但我从邮递员那里点击了任何端点,它没有返回任何响应。

【问题讨论】:

  • 你在 docker compose 中暴露了端口吗?
  • @DavidYue 是的。 ports: - "5000:5000" 请看上面 docker-compose 代码。

标签: python python-3.x docker flask docker-compose


【解决方案1】:

您必须添加 host=0.0.0.0 作为 Flask 运行参数。详情见文档:https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.run

【讨论】:

    猜你喜欢
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多