如何在Docker的contain上运行Python服务器

2024-04-26 18:06:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在docker容器上运行PythonHTTP服务器。在

我的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

我用以下方法建立形象:

^{pr2}$

启动容器并输入命令:

docker run -i -t -p 9998:9998

在Docker映像的bash中,我运行脚本:

python Service.py

正确启动:

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

但当我在主机上输入地址时:

http://localhost:9998

什么也没发生。我也试过把EXPOSE 9998放在DockerFile的末尾,但没用。在

如果我在主机上输入docker-machine地址:

http://192.168.99.100:9989/

它起作用了。但我希望在常规服务器上运行该映像,而不是在本地计算机上运行该映像,因此所有内容都应该公开给localhost。在

我在Windows7上试过了。在

你知道怎么运行这个吗?在

我将非常高兴你的帮助!在


Tags: installdockerrundockerfilesrc服务器appget
3条回答

你所描述的是正常行为。Docker映像运行在虚拟化环境中,因此无法共享环回地址。您需要做的是将流量从服务器重定向到docker映像。在

This documentation page应该有你需要的所有答案。在

祝你好运!在

来自https://docs.docker.com/engine/reference/run/#expose-incoming-ports

p expose选项也可以使用ip地址。如果您还想绑定到127.0.0.1,那么它就会绑定到127.0.0.1。在

请尝试如下操作:-p 127.0.0.1:9998:9998

这可能是或可能不相关,但我不能添加评论,所以一个独立的答复你得到!在

在Docker容器中,您可能需要将应用程序绑定到0.0.0.0主机。See this link.

在我看来(虽然我必须了解更多关于这个应用程序的信息才能确定),你正在寻找一个在环回接口上的连接。这将只向本地计算机公开侦听器。相反,0.0.0.0用于向机器上的所有网络接口公开侦听器。在本例中,指定为docker网络适配器。如需更详细的解释,see this post.

相关问题 更多 >