【问题标题】:Django show "It worked" page instead of my project when I start it docker当我启动它时,Django 显示“它工作”页面而不是我的项目
【发布时间】:2015-06-11 08:45:21
【问题描述】:

我正在尝试使用我的应用程序创建 docker 容器,该容器在本地机器和生产服务器上运行良好。但是当我用我的项目创建 docker 容器时,我只看到“它工作”页面而不是我的项目!

FROM python:2.7
MAINTAINER Name name <mail@gmail.com>
ENV PYTHONUNBUFFERED 1
ENV DJANGO_SETTINGS_MODULE lms.settings
RUN ls -la /
RUN mkdir /lms/
WORKDIR /lms/
RUN pip install six Django==1.5.12 numpy python-dateutil Pillow django-colorful gunicorn south djangorestframework djangorestframework-jsonp simplejson psutil
ADD . /lms/
RUN (cd /lms/ && python manage.py syncdb --noinput)
RUN (cd /lms/ && python manage.py collectstatic --noinput)
RUN ls -la /lms/
RUN cd /lms/
CMD gunicorn --env DJANGO_SETTINGS_MODULE=lms.settings lms.wsgi --pythonpath '/lms/' --bind 0.0.0.0:8000

【问题讨论】:

  • 你的 Run 命令执行 cd 并退出,要么用 cd 改变你的最后一个命令,或者更好地使用早期的 WORKDIR

标签: django docker


【解决方案1】:

你应该像这样修改你的 Dockerfile

FROM python:2.7
MAINTAINER Name name <mail@gmail.com>
ENV PYTHONUNBUFFERED 1
ENV DJANGO_SETTINGS_MODULE lms.settings
RUN ls -la /
RUN mkdir /lms
WORKDIR /lms
RUN pip install six Django==1.5.12 numpy python-dateutil Pillow django-colorful gunicorn south djangorestframework djangorestframework-jsonp simplejson psutil
ADD . /lms
RUN python manage.py syncdb --noinput
RUN python manage.py collectstatic --noinput
RUN ls -la 
CMD gunicorn --env DJANGO_SETTINGS_MODULE=lms.settings lms.wsgi --pythonpath '/lms/' --bind 0.0.0.0:8000`  

查看 WORKDIR 的文档 https://docs.docker.com/reference/builder/#workdir

还有这个“最佳实践”

https://docs.docker.com/articles/dockerfile_best-practices/

当您RUN cd /lms 时,它会执行 cd 并退出,因此下一个命令不在 /lms 中,而且,当您指定 WORKDIR 时,不要将 / 放在目录末尾,因为您有两次 WORDKIR,我猜你的默认目录是/lms/lms

【讨论】:

    猜你喜欢
    • 2023-02-05
    • 2013-11-13
    • 2021-08-02
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多