Docker 无法访问主机上的 Web 服务器

xha*_*lix 4 django docker

我正在尝试在 dockerized 环境中设置 pythons django

文件

FROM python:3.5-slim
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
RUN pip install --upgrade pip
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
EXPOSE 8000
Run Code Online (Sandbox Code Playgroud)

我将此构建为django-app.

docker-compose.yml

django:
  container_name: django
  image: django-app:latest
  ports:
    - "8000:8000"
  volumes:
    - ./config/startup.sh:/startup.sh
    - ./app:/code
  command: /bin/sh /startup.sh
Run Code Online (Sandbox Code Playgroud)

启动文件

#!/bin/sh
cd /code
django-admin.py startproject djagento
echo "Creating Project djagento"
cd djagento
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

我使用 ubuntu 14.04 LTS 作为我的主机系统

docker exec -it django bash $curl 127.0.0.1:8000 是成功的。

我正在获取我的容器的 ip docker inspect django

    "Gateway": "172.17.0.1",
    "IPAddress": "172.17.0.2"
Run Code Online (Sandbox Code Playgroud)

但是当尝试curl 172.17.0.1:8000curl 172.17.0.2:8000或卷曲127.0.0.1:8000时,除了连接重置之外,我什么也得不到

编辑

docker ps

baada462ae72        django-app:latest   "/bin/sh /startup.sh"   6 seconds ago       Up 5 seconds        0.0.0.0:8005->8000/tcp   django
Run Code Online (Sandbox Code Playgroud)

*在另一个端口上,结果相同*

CONTAINER ID        IMAGE               COMMAND                 CREATED              STATUS              PORTS                    NAMES
a9d99ee563e5        django-app:latest   "/bin/sh /startup.sh"   About a minute ago   Up About a minute   0.0.0.0:8005->8000/tcp   django
Run Code Online (Sandbox Code Playgroud)

谢谢

xha*_*lix 8

对于任何遇到此问题的人,您必须在 docker 容器内的 0.0.0.0:8000 上运行 django 服务器,只需添加python django-admin runserver 0.0.0.0:8000我的 startup.sh 即可为我解决此问题