我正在尝试将一个烧瓶应用程序归档。但是当到达http://127.0.0.1:5000/上的任何端点时,会出现以下错误。我已经正确地将端口从本地主机映射到容器。在
flask.cli.NoAppException flask.cli.NoAppException: While importing "dsdp.wsgi", an ImportError was raised:
Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app import(module_name) File "/var/www/dsdp/wsgi.py", line 4, in from app.common.observer import ConfigPublisher, QueueSubscriber ModuleNotFoundError: No module named 'app'
这是我容器里的结构。在
root@6c37b85d98cb:/var/www/dsdp# ls -ltr
total 32
-rw-rw-r-- 1 root root 135 Oct 4 07:55 uwsgi.local.ini
-rw-rw-r-- 1 root root 598 Oct 4 07:55 requirements.txt
drwxrwxr-x 5 root root 4096 Oct 4 07:55 config
-rw-rw-r-- 1 root root 0 Oct 4 07:55 __init__.py
-rwxrwxr-x 1 root root 175 Oct 7 17:14 entrypoint.sh
-rw-rw-r-- 1 root root 742 Oct 7 17:36 wsgi.py
drwxrwxr-x 7 root root 4096 Oct 7 17:43 app
-rw-rw-r-- 1 root root 614 Oct 7 17:45 Dockerfile.app.local
FLASK_-APP环境变量:
^{pr2}$内部wsgi.py,我正在尝试导入如下内容
^{3}$当我在本地运行flask应用程序时,这些功能运行良好。但当我在docker中运行时,它抛出了上面的错误。我有一个应用程序文件夹中的初始化py。在
这是我用来建立图像的Dockerfile。在
本地.rfile.rfile:
FROM python:3.7
RUN mkdir -p /var/www/dsdp/
WORKDIR /var/www/dsdp/
COPY . /var/www/dsdp/
RUN pip3 install --no-cache-dir -r requirements.txt
COPY uwsgi.local.ini /etc/uwsgi.ini
EXPOSE 5000
这就是我使用docker构建图像的方法-合成.yml
workload_service:
container_name: workload_container
restart: always
image: workload
build:
context: ./dsdp
dockerfile: Dockerfile.app.local
depends_on:
- postgres_service
ports:
- "5000:5000"
environment:
- FLASK_APP=wsgi.py
- FLASK_DEBUG=1
- CONFIG_PATH=config/local
- FLASK_CONFIG=local
- APP_NAME=WORKLOAD
- PYTHONPATH=.
command: flask run --host=0.0.0.0 --port 5000
我哪里出错了?在
99%(或者至少绝大多数情况下)发生这种情况的原因是容器内部使用了127.0.0.1:5000。这将是容器内的
localhost
。这与容器(在主机中)外部的localhost
不同。在修复方法是绑定到容器内的(将
host=
设置为)0.0.0.0:5000
。在将您
from
更改为:尝试在Dockerfile中设置您的
^{pr2}$FLASK_APP
:从文件中:
相关问题 更多 >
编程相关推荐