2017-07-25 87 views
0

我试图将我的Django项目放入泊坞窗图像中。无法访问Docker中的Django项目的8000端口

这是我Dockerfile

FROM python:3 
ENV PYTHONUNBUFFERED 1 
RUN mkdir /code 
WORKDIR /code 
ADD requirements.txt /code/ 
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple 
ADD . /code/ 
EXPOSE 8000 

然后我生成并运行此泊坞窗容器:

docker run -i -t -p 8000:8000 e2 python3 manage.py runserver 8000 
Performing system checks... 

System check identified no issues (0 silenced). 
July 25, 2017 - 16:28:00 
Django version 1.11.3, using settings 'chaoYuBackend.settings' 
Starting development server at http://127.0.0.1:8000/ 
Quit the server with CONTROL-C. 

但是,当我在Chrome浏览localhost:8000127.0.0.1:8000,我ERR_CONNECTION_REFUSED

这是我得到通过执行docker ps,似乎8000端口已经暴露:

docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS     NAMES 
71c0502de704  e2     "python3 manage.py..." 54 seconds ago  Up 52 seconds  0.0.0.0:8000->8000/tcp gallant_boyd 

当我运行lsof -i :8000,我得到了一个错误:

lsof result

我码头版本是17.06.0-ce, build 02c1d87,我正在使用MacOS 10.12.6。

我的Dockerfile有什么不对吗?我如何在浏览器中访问我的Django站点?

在此先感谢!

+0

使用'lsof -i:8000'检查8000是否真的在使用中。使用'sudo iptables-save'列出你的iptables规则。 – cizixs

回答

0

Docker公开随机本地端口上的容器端口。看看docker ps

PORTS 
0.0.0.0:32769->8000/tcp 

码头工人暴露在本地机器上的端口32769。您可以通过localhost:32769

0

The -P option publishes all the ports to the host interfaces. Docker binds each exposed port to a random port on the host. ...

可以访问替换 '-P' 与 '-p 8000:8000',再试一次。

+0

仍然不能正常工作... – awmleer

+0

令人难以置信,仍然ERR_CONNECTION_REFUSED?检查浏览器上的代理服务器,并检查系统上的端口和进程。运行cmd'curl http:// localhost:8000 /',并在这里显示你的回应。 – gzerone

+0

我得到'卷曲:(7)无法连接到本地端口8000:连接被拒绝 – awmleer

1

我终于解决了这个问题!

我想这是由自制码头包引起的。

通过官方dmg重新安装docker后,一切都没事。