Dockerized Django应用程序获取错误:无法打开python文件my_project / wsgi.py

我正在尝试创build一个DJang应用程序的Docker化版本。 该应用程序是使用以下命令创build的:

docker build -t my-app . 

该应用程序开始使用:

 docker container run --name my-app --detach my-app 

当Django使用PyCharm下的工具运行时,一切正常。 只有当试图将常规的DJango应用程序转换为Docker化的应用程序时,才会发生问题。 我是DJango与Docker混合的新手 – 所以 – 我目前不确定错误的含义或者为什么会发生。

我怎样才能解决这个问题?

信息如下。

在启动应用程序时,在错误日志中出现以下错误:

 PEP 405 virtualenv detected: /venv Set PythonHome to /venv Python main interpreter initialized at 0x559036d279e0 python threads support enabled your server socket listen backlog is limited to 100 connections your mercy for graceful operations on workers is 60 seconds mapped 434688 bytes (424 KB) for 16 cores *** Operational MODE: preforking+threaded *** *** uWSGI is running in multiple interpreter mode *** spawned uWSGI master process (pid: 1) spawned uWSGI worker 1 (pid: 5, cores: 8) spawned uWSGI worker 2 (pid: 6, cores: 8) spawned uWSGI http 1 (pid: 7) failed to open python file my_project/wsgi.py failed to open python file my_project/wsgi.py unable to load app 0 (mountpoint='') (callable not found or import error) *** no app loaded. going in full dynamic mode *** unable to load app 0 (mountpoint='') (callable not found or import error) *** no app loaded. going in full dynamic mode *** 

这是Dockerfile

 FROM python:3.6-alpine ADD requirements.txt /requirements.txt RUN set -ex \ && apk add --no-cache --virtual .build-deps \ gcc \ make \ libc-dev \ libffi-dev \ zlib-dev \ freetype-dev \ libjpeg-turbo-dev \ libpng-dev \ musl-dev \ linux-headers \ bash \ pcre-dev \ postgresql-dev \ python3-dev \ && pyvenv /venv \ && /venv/bin/pip install -U pip \ && LIBRARY_PATH=/lib:/usr/lib /bin/sh -c "/venv/bin/pip install --no-cache-dir -r /requirements.txt" \ && runDeps="$( \ scanelf --needed --nobanner --recursive /venv \ | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ | sort -u \ | xargs -r apk info --installed \ | sort -u \ )" \ && apk add --virtual .python-rundeps $runDeps \ && apk del .build-deps RUN mkdir /code/ ADD backendworkproj /code/ ADD docker-entrypoint.sh /code/docker-entrypoint.sh ADD appmaster.pth /venv/lib/python3.6/site-packages/ WORKDIR /code/ EXPOSE 8000 ENV UWSGI_VIRTUALENV=/venv UWSGI_WSGI_FILE=my_project/wsgi.py UWSGI_HTTP=:8000 UWSGI_MASTER=1 UWSGI_WORKERS=2 UWSGI_THREADS=8 UWSGI_UID=1000 UWSGI_GID=2000 UWSGI_LAZY_APPS=1 UWSGI_WSGI_ENV_BEHAVIOR=holy CCLUB_WORK=true RUN DATABASE_URL=none /venv/bin/python manage.py collectstatic --noinput ENTRYPOINT ["/code/docker-entrypoint.sh"] CMD ["/venv/bin/uwsgi", "--http-auto-chunked", "--http-keepalive"] 

这是requirements.txt文件

 argon2-cffi==16.3.0 bcrypt==3.1.3 cffi==1.11.1 cx-Oracle==6.0.2 Django==1.11.1 flake8==3.4.1 mccabe==0.6.1 olefile==0.44 Pillow==4.3.0 pycodestyle==2.3.1 pycparser==2.18 pyflakes==1.5.0 pytz==2017.2 six==1.11.0 uwsgi 

这是appmaster.pth文件

 /code/appmasterdata 

更新

@disflux – 感谢您的input。

我在这里关注这个博客: http : //www.caktusgroup.com/blog/2017/03/14/production-ready-dockerfile-your-python-django-app/

我通过了这个错误 – 但是 – 最终,它并没有真正的工作。

我开始在这里跟随这个文档: https : //docs.docker.com/compose/django/

我保留了部分来自博客的原始组件(这对我来说是有意义的)。

我遇到了一个不同的问题。 所以 – 我会看看我能否解决这个问题。