繁体   English   中英

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

[英]django runserver hangs in docker-compose up but runs correctly in docker-compose run

编辑

将 --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 到达。

docker-compose run -p 8000:8000 web python manage.py runserver 0.0.0.0:8000

问题

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

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

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

文件

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

version: '3'
services:
    web:
        build: .
        command: python manage.py runserver 0.0.0.0:8000
        volumes:
            - .:/code
        ports:
            - "8000:8000"

docker-compose.yml

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

要求.txt

 Django>=1.8,<2.0

系统

我的操作系统是 windows 8.1

我自己也遇到了这个问题,似乎您需要为容器分配一个 tty 和一个 stdin 才能使runserver工作:

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

我有同样的问题,无法让它做任何其他事情。 但是,当我转到 docker 机器docker-machine ip它返回 192.168.99.100,然后通过转到 192.168.99.100:8000 我的 docker 容器开始接收请求

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM