在docker中不能访问Django项目的8000端口
我试图把我的Django项目放入一个docker镜像。
这是我的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:8000
或127.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
,出现错误:
我的码头版本是17.06.0-ce, build 02c1d87
,我使用MacOS 10.12.6。
在我的Dockerfile
有什么不对吗? 我怎样才能浏览我的Django网站?
提前致谢!
我终于解决了这个问题!
我想这是由自制docker包引起的。
通过官方dmg重新安装docker之后,一切都可以。 😷
Docker公开随机本地端口上的容器端口。 看看docker ps
:
PORTS 0.0.0.0:32769->8000/tcp
Docker在本地机器上公开端口32769
。 你可以通过localhost:32769
访问localhost:32769
-P选项将所有端口发布到主机接口。 Docker将每个暴露的端口绑定到主机上的随机端口。 …
用'-p 8000:8000'替换'-P',然后重试。