ModuleNotFoundError: No module named 'dash_appdashboard'

Viewed 222

I have a small web app written in Python. I run it in a docker container. Locally the web app works fine. When I deploy the container to Azure App Service I get the following error when I tried to browsr the website:

2021-09-14T10:10:18.769704271Z [2021-09-14 10:10:18 +0000] [6] [INFO] Starting gunicorn 20.1.0
2021-09-14T10:10:18.778481220Z [2021-09-14 10:10:18 +0000] [6] [INFO] Listening at: http://0.0.0.0:5000 (6)
2021-09-14T10:10:18.778869426Z [2021-09-14 10:10:18 +0000] [6] [INFO] Using worker: sync
2021-09-14T10:10:18.796613327Z [2021-09-14 10:10:18 +0000] [8] [INFO] Booting worker with pid: 8
2021-09-14T10:10:18.809302941Z [2021-09-14 10:10:18 +0000] [8] [ERROR] Exception in worker process
2021-09-14T10:10:18.809318741Z Traceback (most recent call last):
2021-09-14T10:10:18.809323541Z   File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
2021-09-14T10:10:18.809327442Z     worker.init_process()
2021-09-14T10:10:18.809330842Z   File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 134, in init_process
2021-09-14T10:10:18.809334442Z     self.load_wsgi()
2021-09-14T10:10:18.809337742Z   File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
2021-09-14T10:10:18.809377242Z     self.wsgi = self.app.wsgi()
2021-09-14T10:10:18.809381742Z   File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
2021-09-14T10:10:18.809385343Z     self.callable = self.load()
2021-09-14T10:10:18.809388643Z   File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
2021-09-14T10:10:18.809392143Z     return self.load_wsgiapp()
2021-09-14T10:10:18.809395543Z   File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
2021-09-14T10:10:18.809399143Z     return util.import_app(self.app_uri)
2021-09-14T10:10:18.809403243Z   File "/usr/local/lib/python3.8/site-packages/gunicorn/util.py", line 359, in import_app
2021-09-14T10:10:18.809406943Z     mod = importlib.import_module(module)
2021-09-14T10:10:18.809410243Z   File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
2021-09-14T10:10:18.809413743Z     return _bootstrap._gcd_import(name[level:], package, level)
2021-09-14T10:10:18.809417043Z   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
2021-09-14T10:10:18.809420743Z   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
2021-09-14T10:10:18.809424243Z   File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
2021-09-14T10:10:18.809427643Z ModuleNotFoundError: No module named 'dash_appdashboard'
2021-09-14T10:10:18.809430943Z [2021-09-14 10:10:18 +0000] [8] [INFO] Worker exiting (pid: 8)
2021-09-14T10:10:18.971352582Z [2021-09-14 10:10:18 +0000] [6] [INFO] Shutting down: Master
2021-09-14T10:10:18.971814189Z [2021-09-14 10:10:18 +0000] [6] [INFO] Reason: Worker failed to boot.

My dockerfile is:

FROM python:3.8-slim-buster

EXPOSE 5000

ENV PYTHONDONTWRITEBYTECODE=1

ENV PYTHONUNBUFFERED=1


COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

CMD gunicorn --bind 0.0.0.0:5000 dash_app\dashboard:server

The folder structure of my project

I am new in Deploying dockerized python webapp on azure. Any help will be much appreciated.

2 Answers

In your dockerfile you wrote "dash_app\dashboard" in the output the backslash is missing: "dash_appdashboard". I would try to escape the backslash.

New last line in you dockerfile:

CMD gunicorn --bind 0.0.0.0:5000 dash_app\\dashboard:server

I found my problem, it was the file structure of my project. I moved the dashboar.py file same directory where my docker-compose.yml and dockerfile was. And worked like a charm.

Updated folder structure

And last line of my Dockerfile is :

CMD gunicorn --bind 0.0.0.0:5000 dashboard:server

I hope it will help others.

Related