![](/img/trans.png)
[英]Unable access Dockerized Flask app at http://localhost:5000
[英]http://localhost/5000 not working in docker flask
无法打开文件'/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()
下面是初始化.py:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/")
def hello_world():
return jsonify(hello="world")
下面是结构:
当我运行此命令时,出现红色标记的那些: docker-compose build enter image description here
要做一些改变。
docker-compose.yml
文件中的 cli 命令需要是:
command: python /usr/src/app/manage.py run -h 0.0.0.0 -p 8000
那里的命令名称是run
而不是runserver
。 此外,要绑定的host
ip 和要侦听的port
被配置为不同的命令选项。
此外,为服务配置的端口映射需要从命令 map 到容器端口:
ports:
- 5000:8000
在您的manage.py
模块中,应为FlaskGroup
提供create_app
选项,该选项是工厂而不是应用程序实例。 您可以将其实现为 lambda function。
cli = FlaskGroup(create_app=(lambda:app))
编辑
源文件没有安装在容器卷中,这就是为什么你得到“没有这样的文件manage.py
”。
您需要将源文件安装在/usr/src/app
下的容器卷中。
volumes:
- './web:/usr/src/app'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.