在Flask应用中为dash应用创建dockerfile

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

我在烧瓶应用程序中添加破折号应用程序。虽然执行时效果很好python dashapp.py,当我尝试整体移植时,情况变得很复杂。

应用程序的体系结构如下:

├── project    
│   ├── app     
│   │   ├── __init__.py    
│   │   ├── views.py    
│   │   ├── extensions.py   
│   │   ├── static    
│   │   ├── templates  
│   │   ├── dashapp1    
│   │   │   ├── callback.py   
│   │   │   └── layout.py   
│   │   └── ...   
│   ├── dashapp.py   
│   ├── requirements.txt   
│   ├── .env   
│   └── Dockerfile   

这是我的Dockerfile的内容:

FROM ubuntu:latest
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential

ENV FLASK_APP=dashapp
ENV FLASK_ENV=development

COPY . /dashapp

WORKDIR /dashapp
RUN pip install -r requirements.txt
ENTRYPOINT ["python"]
CMD ["dashapp.py"]

破折号应用程序的注册是init。py文件中的一个:

def create_app():
    server = Flask(__name__)
    server.config.from_object(BaseConfig)

    from app.dashapp1.layout import layout as layout1
    from app.dashapp1.callbacks import register_callbacks as register_callbacks1
    register_dashapp(server, 'Dashapp 1', 'dashboard', layout1, register_callbacks1)

    register_extensions(server)
    register_blueprints(server)

    return server

然后我构建并运行该应用程序:

docker build -t name_app .
docker run -p 5000:5000 name_ap

并出现以下错误:

Traceback (most recent call last):
  File "dashapp.py", line 6, in <module>
    myapp = create_app()
  File "/app/__init__.py", line 12, in create_app
    from dashapp1.layout import layout as layout1
ImportError: No module named dashapp1.layout

几天以来,我一直无法弄清楚如何设置Dockerfile来避免该问题,因此,我们将不胜感激!

python docker flask
2个回答
0
投票

致敬:

Dockerfile

FROM ubuntu:latest
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential

ENV FLASK_APP=dashapp
ENV FLASK_ENV=development

COPY . /dashapp

WORKDIR /dashapp
VOLUME /dashapp   # <-- Add this
RUN pip install -r requirements.txt
EXPOSE 5000       # <-- Add this
ENTRYPOINT ["python"]
CMD ["dashapp.py"]

运行容器的命令

docker run \
  -p 5000:5000 \
  -v "/host/path/to/the/project:/dashapp" \ # <-- Add this
  name_ap

0
投票

在dashapp1中创建init。py文件,它将解决您的问题


├── project    
│   ├── app     
│   │   ├── __init__.py    
│   │   ├── views.py    
│   │   ├── extensions.py   
│   │   ├── static    
│   │   ├── templates  
│   │   ├── dashapp1    
│   │   |   |__init__.py    
│   │   │   ├── callback.py   
│   │   │   └── layout.py   
│   │   └── ...   
│   ├── dashapp.py   
│   ├── requirements.txt   
│   ├── .env   
│   └── Dockerfile   
© www.soinside.com 2019 - 2024. All rights reserved.