chrisss404/powerdns

latest-admin fails with `No module named 'requests'`

mvforell opened this issue · 2 comments

When building and starting private-authoritative.yml from the README, the admin container fails with the following error message:

admin               | Usage: flask db upgrade [OPTIONS] [REVISION]
admin               |
admin               | Error: While importing "powerdnsadmin", an ImportError was raised:
admin               |
admin               | Traceback (most recent call last):
admin               |   File "/usr/lib/python3.8/site-packages/flask/cli.py", line 240, in locate_app
admin               |     __import__(module_name)
admin               |   File "/var/www/pdns-admin/powerdnsadmin/__init__.py", line 8, in <module>
admin               |     from .lib import utils
admin               |   File "/var/www/pdns-admin/powerdnsadmin/lib/utils.py", line 4, in <module>
admin               |     import requests
admin               | ModuleNotFoundError: No module named 'requests'
admin               |
admin               | [2020-10-26 15:38:14 +0000] [1] [INFO] Starting gunicorn 20.0.4
admin               | [2020-10-26 15:38:14 +0000] [1] [INFO] Listening at: http://0.0.0.0:3031 (1)
admin               | [2020-10-26 15:38:14 +0000] [1] [INFO] Using worker: sync
admin               | [2020-10-26 15:38:14 +0000] [7] [INFO] Booting worker with pid: 7
admin               | [2020-10-26 15:38:14 +0000] [8] [INFO] Booting worker with pid: 8
admin               | [2020-10-26 15:38:14 +0000] [7] [ERROR] Exception in worker process
admin               | Traceback (most recent call last):
admin               |   File "/usr/lib/python3.8/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
admin               |     worker.init_process()
admin               |   File "/usr/lib/python3.8/site-packages/gunicorn/workers/base.py", line 119, in init_process
admin               |     self.load_wsgi()
admin               |   File "/usr/lib/python3.8/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
admin               |     self.wsgi = self.app.wsgi()
admin               |   File "/usr/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
admin               |     self.callable = self.load()
admin               |   File "/usr/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
admin               |     return self.load_wsgiapp()
admin               |   File "/usr/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
admin               |     return util.import_app(self.app_uri)
admin               |   File "/usr/lib/python3.8/site-packages/gunicorn/util.py", line 358, in import_app
admin               |     mod = importlib.import_module(module)
admin               |   File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
admin               |     return _bootstrap._gcd_import(name[level:], package, level)
admin               |   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
admin               |   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
admin               |   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
admin               |   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
admin               |   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
admin               |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
admin               |   File "/var/www/pdns-admin/powerdnsadmin/__init__.py", line 8, in <module>
admin               |     from .lib import utils
admin               |   File "/var/www/pdns-admin/powerdnsadmin/lib/utils.py", line 4, in <module>
admin               |     import requests
admin               | ModuleNotFoundError: No module named 'requests'
admin               | [2020-10-26 15:38:14 +0000] [7] [INFO] Worker exiting (pid: 7)
[...]

I'm not sure why this happens as the Dockerfile includes a command to install all requirements (https://github.com/chrisss404/powerdns/blob/master/admin/Dockerfile#L29) which include requests (https://github.com/ngoduykhanh/PowerDNS-Admin/blob/master/requirements.txt#L10).

Interestingly, everything works fine when using chrisss404/powerdns:202005-admin instead of chrisss404/powerdns:latest-admin.

Maybe this line, which is present in the chrisss404/powerdns:202005-admin Dockerfile, but not in the chrisss404/powerdns:latest-admin Dockerfile, is the culprit? https://github.com/chrisss404/powerdns/blob/admin-202005/admin/Dockerfile#L20

Thanks for reporting. Should be fixed now.