Создайте файл dockerfile для приложения da sh в приложении Flask - PullRequest
0 голосов
/ 22 февраля 2020

Я добавляю приложение da sh в приложение flask. хотя он прекрасно работает при выполнении 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"]

Регистрация приложения da sh - одна в файле 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

Прошло несколько дней, так как я не могу понять, как настроить файл Docker, чтобы избежать этой проблемы Поэтому любая помощь будет высоко ценится!

Ответы [ 2 ]

0 голосов
/ 22 февраля 2020

Создайте init .py файл в dashapp1, это решит вашу проблему


├── project    
│   ├── app     
│   │   ├── __init__.py    
│   │   ├── views.py    
│   │   ├── extensions.py   
│   │   ├── static    
│   │   ├── templates  
│   │   ├── dashapp1    
│   │   |   |__init__.py    
│   │   │   ├── callback.py   
│   │   │   └── layout.py   
│   │   └── ...   
│   ├── dashapp.py   
│   ├── requirements.txt   
│   ├── .env   
│   └── Dockerfile   
0 голосов
/ 22 февраля 2020

thry folowing:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...