我在烧瓶应用程序中添加破折号应用程序。虽然执行时效果很好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来避免该问题,因此,我们将不胜感激!
致敬:
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
在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