Я пытаюсь настроить pythons django внутри докеризованной среды
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
Я построил это, чтобы 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
Я использую 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"
Но при попытке curl 172.17.0.1:8000
или curl 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
* НА другом порту, тот же результат *
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
Спасибо
Для тех, кто наткнется на это, вам нужно запустить сервер django на 0.0.0.0:8000 внутри контейнера докеров, просто добавив python django-admin runserver 0.0.0.0:8000
в моем startup.sh это исправлено для меня
Есть ли еще что-нибудь на вашей машине, использующей порт 8000? Попробуйте изменить порт на 8005 или 9005 и т. Д. На хост-машине. Я обычно ненавижу использовать один и тот же порт только из-за путаницы, которую он иногда вызывает.
В вашем dockerfile используйте
ports:
- '8005:8000'
пример.
После:
Затем попробуйте скрутить IP-адрес на порту 8005.
Если это по-прежнему не работает, проверьте свои IPTables в своем контейнере. Вы случайно заблокировали порт 8000 как локальный?