2017-04-05 143 views
0

我想在Docker容器上運行Python HTTP服務器。如何在Docker的容器上運行Python服務器

DockerFile看起來是這樣的:

FROM continuumio/anaconda3:latest 

RUN apt-get -y update 
RUN apt-get -y install linux-headers-amd64 build-essential libc-dev gcc 

RUN conda install --yes gcc 
RUN conda install --yes numpy 
RUN conda install --yes scipy 
RUN conda install --yes gensim 
RUN pip install annoy 

RUN conda config --add channels conda-forge 
RUN conda install --yes spacy 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

ADD my-app.tar /usr/src/app 

WORKDIR /usr/src/app/source 

我打造的形象與:

docker build -t my-app-poc . 

啓動容器,並輸入命令:

docker run -i -t -p 9998:9998 

在泊塢圖像的bash的我運行腳本:

python Service.py 

哪個正確啓動:

Wed Apr 5 13:09:51 2017 Server Starts - :9998 

但是,當我在我的主機上輸入地址:

http://localhost:9998 

什麼也沒有發生。我已經嘗試在我的DockerFile的末尾放置EXPOSE 9998,但這沒有幫助。

如果我輸入我的主機上docker-machine地址:

http://192.168.99.100:9989/ 

它的工作原理。但我想在普通服務器上運行該映像,而不是在本地機器上運行 - 因此所有內容都應該暴露給本地主機。

我在Windows 7上試過了。

你知道如何運行嗎?

我會很樂意爲您提供幫助!

+0

http://stackoverflow.com/help/someone-answers –

回答

0

這可能是也可能不是相關的,但我不能添加評論,所以你得到一個獨立的答覆!

在Docker容器中,您可能必須將應用程序綁定到0.0.0.0主機。 See this link.

在我看來(儘管我必須知道更多關於應用程序的信息),您正在尋找環回接口上的連接。這隻會將偵聽器暴露給本地機器。相比之下,0.0.0.0用於將偵聽器暴露給機器上的所有網絡接口。特別是在這種情況下,泊塢窗網絡適配器。對於更詳細的解釋,see this post.

0

你所描述的是一種正常的行爲。 Docker鏡像在虛擬環境中運行,因此無法共享環回地址。您需要做的是將您的服務器的流量重定向到您的泊塢窗圖像。

This documentation page應該有你需要的所有答案。

祝你好運!

相關問題