Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django runserver在docker compose up中挂起,但在docker compose run中正确运行_Python_Django_Docker_Docker Compose - Fatal编程技术网

Python django runserver在docker compose up中挂起,但在docker compose run中正确运行

Python django runserver在docker compose up中挂起,但在docker compose run中正确运行,python,django,docker,docker-compose,Python,Django,Docker,Docker Compose,编辑 将--ipv6添加到命令中,虽然没有为正确配置,但似乎超过了进程挂起的点 问题 调用docker compose up执行runserver,但在打印当前时间后挂起 调用docker compose run-p 8000:8000 web python manage.py runserver 0.0.0.0:8000也会执行服务器,但执行成功,可访问192.168.99.100:8000 问题 为什么我可以直接从shell中的docker compose运行服务器,而不能从.

编辑 将--ipv6添加到命令中,虽然没有为正确配置,但似乎超过了进程挂起的点

问题
  • 调用docker compose up执行runserver,但在打印当前时间后挂起

  • 调用docker compose run-p 8000:8000 web python manage.py runserver 0.0.0.0:8000也会执行服务器,但执行成功,可访问192.168.99.100:8000

问题 为什么我可以直接从shell中的docker compose运行服务器,而不能从.yml文件运行服务器

对我来说,.yml文件的内容和shell中的docker compose运行行非常相似

我能想到的唯一区别可能是正确启动django服务器所需的某种级别的权限,但我不知道如何解决这个问题。Docker在windows 8.1计算机上运行。我的虚拟机的共享文件夹是默认的c:\Users

文件夹 我的文件夹包含一个新的django项目以及这些docker文件。我修改了python和django的不同版本,但结果是一样的。我已在尝试使用之间清理了我的图像和容器

docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker-compose.yml

Dockerfile

requirements.txt


Django>=1.8,我遇到了同样的问题,无法让它做任何其他事情。但是,当我转到docker机器的ip
docker机器ip
时,它返回192.168.99.100,然后转到192.168.99.100:8000,我的docker容器开始接收请求

我自己也遇到了这个问题,似乎您需要为容器分配一个tty和一个stdin,以使
运行服务器
工作:

  python:
    image: my-image:latest
    stdin_open: true # docker run -i
    tty: true # docker run -t
    build:
      context: ..
      dockerfile: docker/Dockerfile

为什么要在dockerfile中绑定localhost:8080而不是0.0.0.0:8080?哦,应该是0.0.0.0:8000。然而,它仍然以同样的方式挂起。经过一些测试后,我忘了将其更改回。如果删除撰写文件中的
卷:-.:/code
,从我的撰写文件中删除
卷:-.:/code
并运行它,会导致服务器在启动时挂起。我从run命令中列出了目录(
ls-l
),其中包含卷,没有卷,我注意到,有卷和run命令列出了具有相同权限的相同文件(
-rwxrwx
),而没有卷,权限是
-rwxr-xr-x
。我不知道这是否有任何意义。如果我添加行
user:root
,即使没有
volumes
,权限似乎也匹配,尽管它仍然挂起。
stdin\u open:true
tty:true
也修复了挂起
http.server
BaseHTTPRequestHandler
FROM python:3.6-alpine
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
Django>=1.8,<2.0
  python:
    image: my-image:latest
    stdin_open: true # docker run -i
    tty: true # docker run -t
    build:
      context: ..
      dockerfile: docker/Dockerfile