我正在尝试在dockerized环境中设置python 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
我build立这个django-app 。
泊坞窗,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是成功的。
我得到我的容器与docker inspect django的IP
"Gateway": "172.17.0.1", "IPAddress": "172.17.0.2"
但是,当试图curl 172.17.0.1:8000或curl 172.17.0.2:8000或curl127.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
谢谢
对于任何人都磕磕绊绊,你必须在Docker容器内的0.0.0.0:8000上运行django服务器,只需在我的startup.sh中添加python django-admin runserver 0.0.0.0:8000解决这个问题
你的机器上有没有其他的东西使用8000端口? 尝试将主机上的端口更改为8005或9005等。 一般来说,我总是讨厌使用同一个端口,因为它有时会造成混乱。
在你的dockerfile中使用
ports: - '8005:8000'
实例。
后:
然后尝试在端口8005上蜷缩IP。
如果仍然无法检查您的容器上的IPTables。 你有没有把8000端口锁在本地?