django - Docker 连接拒绝挂起 Django

标签 django docker docker-compose dockerfile docker-container

当我运行我的容器时,它只是卡在下一行,如果我写

curl http://0.0.0.0:8000/

我明白了

Failed to connect to 0.0.0.0 port 8000: Connection refuse

这是我的 dockerfile

FROM python:3.6.1

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

RUN pip3 install -r requirements.txt

CMD ["python3", "dockerizing/manage.py", "runserver", "0.0.0.0:8000"]

我也尝试通过 docker-compose.yml 文件执行此操作,但再次没有任何反应,我搜索了很多,但没有找到解决方案,这是 docker-compose.yml

version: "3"
services:
  web:
    image: app1
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "8000:8000"
    networks:
      - webnet
networks:
  webnet:

顺便说一句,如果我使用 myapp 镜像运行 docker ps,我会得到以下结果:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
e9633657f060        app1                "python3 dockerizi..."   5 seconds ago       Up 5 seconds                            friendly_dijkstra

当我使用 django-compose.yml 和 docker ps 部署服务时,我得到:

`MacBook-Pro-de-Jesus:docker-django Almaral$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
13677a71d9d5        app1:latest        "python3 dockerizin..."   15 seconds ago      Up 11 seconds                           getstartedlab_web.1.cq3zqmpfsii5g6m5r9qsnmtb1
c6693118ef70        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 12 seconds                           getstartedlab_web.4.r472oh80s4zd1yymj447f1df6
f3822e47970b        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 12 seconds                           getstartedlab_web.2.lkp43v9h30esjohcnf3pe31hi
f66a4038ebdf        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 12 seconds                           getstartedlab_web.5.xxu01ruebd84tnlxmoymsu0vo
e3d31c419c11        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 13 seconds                           getstartedlab_web.3.uqswgirmg22sjnekzmf5b4xo7`

最佳答案

您的 docker ps 输出在 PORTS 列中没有显示任何内容。这意味着没有从主机到容器的端口转发。

[...]     STATUS          PORTS                     NAMES
[...]     Up 5 seconds                              friendly_dijkstra

如果您使用命令docker run来运行容器,则应使用命令选项-p hostPort:containerPort在主机和容器上显式指定端口号>

docker run -p 8000:8000 app1

现在,运行docker ps应该显示端口转发。

[...]     STATUS          PORTS                     NAMES
[...]     Up 5 seconds    0.0.0.0:8000->8000/tcp    friendly_dijkstra

如果您使用 docker-compose 启动容器,则主机和容器端口已在 docker-compose.yml 文件中配置,因此您不需要命令行选项。

docker-compose up web

要使用 docker compose,您必须在主机上安装它。 它是一个 python 模块,因此您可以使用 pip 安装它 pip install docker-compose

关于django - Docker 连接拒绝挂起 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44163688/

相关文章:

docker - docker组成了nginx反向代理,未将容器添加到docker0网桥

python - Django Grappelli 在内联管理中添加自动完成查找

python - 通过 django 中的空 JsonField 查询

python - 如何从 Django 中的请求 QueryDict 中删除 key ?

docker - JupyterHub产生的Jupyter Notebook容器没有外部网络访问权限

docker - .dockerignore 在镜像构建时未被读取

python - Django:堆叠装饰器

docker - Windows Docker中的网络存储(SMB/CIFS)

docker - docker如何自动为容器分配和回收端口

docker - 推送 "dhcp-option DNS <hostname>"