Python django runserver在docker compose up中挂起,但在docker compose run中正确运行
编辑 将--ipv6添加到命令中,虽然没有为正确配置,但似乎超过了进程挂起的点 问题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运行服务器,而不能从.
- 调用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
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker-compose.yml
Dockerfile
requirements.txt
Django>=1.8,我遇到了同样的问题,无法让它做任何其他事情。但是,当我转到docker机器的ipdocker机器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