【问题标题】:run django in docker container在 docker 容器中运行 django
【发布时间】:2016-12-16 13:53:31
【问题描述】:

我正在尝试制作一个在 docker 容器中运行的 Django 应用程序的简单示例。

使用这张图片https://hub.docker.com/_/django/ 只是为了简单。请不要告诉我我不应该在生产中使用它:) 应用程序非常简单,我可以使用非常基本的 Django 服务器。

所以,问题是我在尝试运行容器映像时总是遇到这个错误

C:\Users\slipo\PycharmProjects\simple_blog>docker run -p 8000:8000 my-blog
python: can't open file './manage.py runserver 0.0.0.0:8000 --settings=mysite.settings.prod': [Errno 2] No such file or directory

但是,./manage.pymysite.settings.prod 都肯定存在于容器中。

容器创建日志显示文件存在:

Step 7 : RUN ls -a
 ---> Running in 932ed2ad3e4c
.
..
.idea
Dockerfile
blog
manage.py
mysite
requirements.txt
templates
 ---> e7f938c1cbf2
Removing intermediate container 932ed2ad3e4c
Step 8 : CMD python ./manage.py runserver 0.0.0.0:8000 --settings=mysite.settings.prod
 ---> Running in f99bcafbc269
 ---> aca534e9ccb6
Removing intermediate container f99bcafbc269
Successfully built aca534e9ccb6

Dockerfile:

FROM django

EXPOSE 8000

ADD . /simple_blog
WORKDIR /simple_blog

RUN pip install -r requirements.txt
RUN pip install django-tinymce

RUN ls -a

CMD [ "python", "./manage.py runserver 0.0.0.0:8000 --settings=mysite.settings.prod" ]

谢谢。

【问题讨论】:

  • 你试过CMD [ "python", "/simple_blog/manage.py runserver 0.0.0.0:8000 --settings=mysite.settings.prod" ]
  • 试试CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000", "--settings=mysite.settings.prod" ]
  • CMD有3种语法,查看文档docs.docker.com/engine/reference/builder
  • 另外,CMD python ./manage.py runserver 0.0.0.0:8000 --settings=mysite.settings.prod 也是有效的,表示 CMD 的 sh -c,CMD 的 shell 形式为 CMD executable param1 param2ctl.io/developers/blog/post/dockerfile-entrypoint-vs-cmd
  • 不要使用相对路径。固定。

标签: python django docker dockerfile


【解决方案1】:

无法打开文件'./manage.py runserver 0.0.0.0:8000 --settings=mysite.settings.prod'

这告诉您它将整个字符串视为单个文件名。

我认为这样的工作:

CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000", "--settings=mysite.settings.prod" ]

【讨论】:

    【解决方案2】:

    尝试执行这段代码。

    CMD [ "python", "../manage.py runserver 0.0.0.0:8080 --settings=my_site.settings.prd"
    

    【讨论】:

    • 你在这里打错了--settings=mysite.settings.prod。但这无论如何都不是问题。只是给出同样的错误。
    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 2016-11-07
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    相关资源
    最近更新 更多