Para alguém que tropeça nisso, você tem que executar o servidor django em 0.0.0.0:8000 dentro do container docker, simplesmente adicionando python django-admin runserver 0.0.0.0:8000
em minha startup.sh corrigido isso para mim
Estou tentando configurar python django dentro de um ambiente dockerizado
Dockerfile
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
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/sh
cd /code
django-admin.py startproject djagento
echo "Creating Project djagento"
cd djagento
python 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 usar curl 172.17.0.1:8000
ou curl 172.17.0.2:8000
ou curl 127.0.0.1:8000
, não consigo fazer nada além de redefinir a conexão
Editar
docker ps
baada462ae72 django-app:latest "/bin/sh /startup.sh" 6 seconds ago Up 5 seconds 0.0.0.0:8005->8000/tcp django
* em outro porto, mesmo resultado *
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
Obrigado
Existe mais alguma coisa na sua máquina usando a porta 8000? Tente alterar 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.
Em seu uso de dockerfile
ports:
- '8005:8000'
instância.
Depois:
Em seguida, tente curling no IP na porta 8005.
Se isso ainda não funcionar, verifique o seu IPTables no seu contêiner. Você bloqueou a porta 8000 para o local apenas por acidente?