http://localhost/5000 无法在 Docker Flask 中工作

问题描述 投票:0回答:2

无法打开文件“/web/manage.py”:[Errno 2]没有这样的文件或目录 退出并显示代码 2

注意:尝试了发布的所有类似问题解决方案,但没有成功。

无论我做什么,都无法让 http://localhost/5000 工作。即使通过从 docker-container 中删除卷和命令来消除上述错误。

下面是docker-compose.yml


services:
  web:
    build: ./web
    command: python /web/manage.py runserver 0.0.0.0:8000
    volumes:
      - './users:/usr/src/app'
 
    ports:
      - 5000:5000 
    env_file:
      - ./.env.dev 

下面是 Dockerfile:

# pull official base image
FROM python:3.9.5-slim-buster

# set work directory
WORKDIR /usr/src/app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt

# copy project
COPY . /usr/src/app/

下面是manage.py:

from flask.cli import FlaskGroup
from project import app
cli = FlaskGroup(app)
if __name__ == "__main__":
    cli()

下面是init.py:

from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/")
def hello_world():
    return jsonify(hello="world")

结构如下:

当我运行这个命令时,出现了用红色标记的:docker-compose build 在此输入图片描述

python postgresql docker flask flask-sqlalchemy
2个回答
0
投票

需要进行一些更改。

您的

docker-compose.yml
文件中的 cli 命令需要是:

    command: python /usr/src/app/manage.py run -h 0.0.0.0 -p 8000

命令名称是

run
而不是
runserver
。此外,要绑定的
host
ip 和要侦听的
port
ip 配置为不同的命令选项。

此外,为服务配置的端口映射需要从命令映射到容器端口:

    ports:
      - 5000:8000 

在您的

manage.py
模块中,应提供
FlaskGroup
选项,该选项是工厂而不是应用程序实例。 您可以将其实现为 lambda 函数。
create_app

编辑

源文件未安装在容器卷中,这就是为什么您收到“没有这样的文件

cli = FlaskGroup(create_app=(lambda:app))

”的信息。

您需要将源文件挂载到

manage.py

下的容器卷中。

/usr/src/app



0
投票

volumes: - './web:/usr/src/app'

	
© www.soinside.com 2019 - 2024. All rights reserved.