我试图在我的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
它给我的网址是tcp://192.168.99.101:2376
时,当我转到它时它会给我一些文件,所以我知道这个端口上的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
非常感谢任何帮助。
答案 0 :(得分:1)
问题是服务器在127.0.0.1
上运行时应该在0.0.0.0
上运行。
我从
更改了Dockerfile中的CMD
行
CMD ["python", "manage.py", "runserver", "8000"]
到
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
它现在有效。