Я работаю в Windows в контейнере Linux Docker.Я пытаюсь запустить приложение Flask через Gunicorn в контейнере Docker (используя docker-compose).Веб-приложение продолжает выходить со статусом 8 из функции import_app.
Я попытался запустить командную строку в качестве администратора, я попытался изменить команду запуска в файле docker-compose, и ятакже попытался запустить остальную часть моего проекта без него.Ничего из этого не помогло.
ОБНОВЛЕНИЕ: я попытался изменить порт, изменить имя файла (index.py
), переустановить образ Docker для Python, удалить мои старые контейнеры Docker, добавить путь к Pythonв docker-compose и
docker-compose.yml:
version: '3'
services:
web:
build: .
command: gunicorn "index:app" -b 0.0.0.0:8080
ports:
- "8888:8080"
volumes:
- .:/code
depends_on:
- redis
redis:
image: redis
А затем трассировка консоли:
web_1 | [2018-12-19 20:36:50 +0000] [8] [ERROR] Exception in worker process
web_1 | Traceback (most recent call last):
web_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
web_1 | worker.init_process()
web_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
web_1 | self.load_wsgi()
web_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
web_1 | self.wsgi = self.app.wsgi()
web_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
web_1 | self.callable = self.load()
web_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
web_1 | return self.load_wsgiapp()
web_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
web_1 | return util.import_app(self.app_uri)
web_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
web_1 | __import__(module)
web_1 | ModuleNotFoundError: No module named 'index'
web_1 | [2018-12-19 20:36:50 +0000] [8] [INFO] Worker exiting (pid: 8)
web_1 | [2018-12-19 20:36:50 +0000] [1] [INFO] Shutting down: Master
web_1 | [2018-12-19 20:36:50 +0000] [1] [INFO] Reason: Worker failed to boot.
flaskpython_web_1 exited with code 3
Dockerfile:
FROM python:3
# set environment variables
ENV PYTHONUNBUFFERED 1
ENV FLASK_APP=index.py
# copy current directory into working directory
COPY . /code
WORKDIR /code
# install python packages
RUN pip install -r requirements.txt
expose 8080
CMD ["gunicorn", "index:app", "-b", "0.0.0.0:8080"]
Наконец, структура проекта:
|docker-compose.yml
|Dockerfile
|index.py
|requirements.txt
Ожидаемый результат заключается в том, что веб-сервер не аварийно завершает работу или завершает работу при выходе всех рабочих.Я хочу, чтобы он распознал, что индекс - это моя точка входа в остальную часть проекта.