Docker - 无法访问Django服务器

时间:2018-03-25 13:11:57

标签: python django docker docker-compose

我无法通过容器中的端口连接到django。我使用此地址:0.0.0.0.:8000并查看:http://joxi.ru/Dr8MeGLhkBWnLm。我用一个命令创建了一个图像和一个容器:' docker-compose up -d'。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
4fea50856eef        docker_web          "python manage.py ru…"   13 seconds ago      Up 11 seconds       0.0.0.0:8000->8000/tcp   docker_web_1

搬运工-compose.yaml

version: '3'

services:
  web:
    build:
      context: .
      dockerfile: /django.testsite/Dockerfile
    ports:
      - "8000:8000"

Dockerfile

FROM python:3

RUN easy_install pip
RUN pip install django==1.9.12
RUN pip install requests

ADD . /.
WORKDIR /django.testsite

CMD ["python", "manage.py", "runserver", "8000"]

如何解决此问题?

1 个答案:

答案 0 :(得分:8)

您的问题:

CMD ["python", "manage.py", "runserver", "8000"]

为了使其正常工作,您需要将其更改为:

CMD ["python", "manage.py", "runserver", "0.0.0.0", 8000"]

最后,在浏览器中使用http://127.0.0.1:8000/

为什么呢?好吧python认为你在127.0.0.1上暴露它,实际上你想要eth0地址,因为它可以改变,我们不想硬编码它,我们使用0.0.0.0这意味着&# 34; ALL"接口

记住docker 127.0.0.1不是你的主机127.0.0.1,每个docker容器都有自己的环回。

让它完全发挥作用:

docker-compose down
docker rmi docker_web
docker-compose up -d

或..(我喜欢80%确定这是语法)

docker-compose down
docker-compose up -d --rebuild

如果它真的不合作,请参阅docker ps -a并确保没有正在运行。 (ps。你可以使用docker rm <id>摆脱它;额外的功劳:docker ps -aq | xargs docker rm为你做的一切;))

额外:如果你不想写出0.0.0.0,你可以简单地写0 - 做同样的事情。