我正在尝试访问在Windows计算机上的Docker中运行的django应用程序。我正在使用docker-machine。我已经为此努力了几个小时。
这是我的Django应用程序的Dockerfile:
FROM python:3.4-slim
RUN apt-get update && apt-get install -y \
gcc \
gettext \
vim \
curl \
postgresql-client libpq-dev \
--no-install-recommends && rm -rf /var/lib/apt/lists/*
EXPOSE 8000
WORKDIR /home/
# add app files from git repo
ADD . server/
WORKDIR /home/server
RUN pip install -r requirements.txt
CMD ["python", "manage.py", "runserver", "8000"]
因此,应该暴露(至少在容器中)端口8000。
当我使用命令docker-machine ip default
时,将获得IP 192.168.99.101。我在端口8000上转到该IP,但没有响应。
我进入VirtualBox,以查看转发这些端口是否可行。这是配置:
我也尝试使用127.0.0.1
作为主机IP。我也尝试禁用Windows防火墙。
这是我启动容器的命令:
docker run --rm -it -p 8000:8000 <imagename>
我不知道为什么无法在该端口上进行连接。当我运行docker-machine ls
url时,它是给我的tcp://192.168.99.101:2376
,当我访问该URL时,它给了我某种文件,因此我知道docker-machine在该端口上处于活动状态。
另外,当我跑步时,docker ps
我得到以下信息:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c00cc28a2bd <image name> "python manage.py run" 7 minutes ago Up 7 minutes 0.0.0.0:8000->8000/tcp drunk_knuth
任何帮助将不胜感激。
问题是服务器本127.0.0.1
应在上运行0.0.0.0
。
我CMD
将Dockerfile中的行从
CMD ["python", "manage.py", "runserver", "8000"]
到
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
现在就可以了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句