O Docker não pode acessar o servidor da Web no host

Estou tentando configurar o pythons django dentro de um ambiente dockerized

Dockerfile

FROM python:3.5-slimENV PYTHONUNBUFFERED 1RUN mkdir /codeRUN pip install --upgrade pipWORKDIR /codeADD requirements.txt /code/RUN pip install -r requirements.txtADD . /code/EXPOSE 8000

Eu construo isso para 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

startup.sh

#!/bin/shcd /codedjango-admin.py startproject djagentoecho "Creating Project djagento"cd djagentopython manage.py runserver

Estou usando o ubuntu 14.04 LTS como meu sistema host

docker exec -it django bash $curl 127.0.0.1:8000 é bem sucedido.

Estou recebendo o ip do meu contêiner com docker inspect django

    "Gateway": "172.17.0.1",    "IPAddress": "172.17.0.2"

Mas ao tentar curl 172.17.0.1:8000 ou curl 172.17.0.2:8000 ou enrolar 127.0.0.1:8000 Não consigo obter nada além de redefinição de conexão

Editar

docker psbaada462ae72        django-app:latest   "/bin/sh /startup.sh"   6 seconds ago       Up 5 seconds        0.0.0.0:8005->8000/tcp   django

* Em outra porta, mesmo resultado *

CONTAINER ID        IMAGE               COMMAND                 CREATED              STATUS              PORTS                    NAMESa9d99ee563e5        django-app:latest   "/bin/sh /startup.sh"   About a minute ago   Up About a minute   0.0.0.0:8005->8000/tcp   django

Obrigado

Para qualquer um tropeçando nisso, você tem que executar o servidor django em 0.0.0.0: 8000 dentro do contêiner docker, simplesmente adicionando python django-admin runserver 0.0.0.0:8000 no meu startup.sh corrigido isso para mim

Existe mais alguma coisa em sua máquina usando a porta 8000? Tente mudar a porta para 8005 ou 9005 etc na máquina host. Eu costumo odiar usar a mesma porta em geral apenas por causa da confusão que às vezes causa.

No seu dockerfile use

ports:   - '8005:8000'

instancia.

Apos:

  • executar docker-compose up-d
  • executar docker ps
  • >Veja se você vê 0.0.0.0: 8005-8000 / tcp para o contêiner em portas.

Em seguida, tente enrolar no IP na porta 8005.

Se isso ainda não funcionar, verifique seus IPTables em seu contêiner. Você trancou a porta 8000 para o local apenas por acidente?