2015-12-08 43 views
2

我試圖訪問我的Windows機器上在Docker中運行的django應用程序。我正在使用碼頭機器。我一直在這個問題上花了好幾個小時。在Windows上的Docker-machine端口轉發不起作用

這裏是我的Dockerfile我Django應用程序:

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查看轉發這些端口是否有效。下面是配置:

VirtualBox port forwarding config

我也用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

問題是服務器在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"]

,它現在的作品。