Gui*_*rme 4 python cherrypy docker
我有一个在Docker容器上运行的简单CherryPy服务器,我无法从外部访问它.我用它来运行它docker run -p 8181:8181 image-name.它启动很好,我看到正常的服务器日志.如果我curl localhost:8181从容器内部尝试curl(),我会得到"Hello World"响应.如果我从我的机器上尝试,我会得到curl: (52) Empty reply from server.我究竟做错了什么?我错过了任何配置吗?
服务器代码:
import cherrypy
class HelloWorld(object):
@cherrypy.expose
def index(self):
return "Hello World!"
cherrypy.quickstart(HelloWorld(), '/', {'global': {'server.socket_port': 8181}})
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM python:2.7.13
RUN mkdir -p /opt/server
WORKDIR /opt/server
ADD . /opt/server
VOLUME /opt/server
RUN apt-get update \
&& apt-get install -y \
python-setuptools \
libopenblas-dev \
gfortran \
vim \
curl \
telnet \
wget \
&& pip install --upgrade pip \
&& pip install -r requirements.txt
EXPOSE 8181
CMD python server.py
Run Code Online (Sandbox Code Playgroud)
requirements.txt
bottle==0.12.13
daemon
cherrypy==8.9.1
ipython==5
lockfile
numpy
psutil
python-daemon
python-dateutil
rocket
scikit-learn==0.18.1
scipy
matplotlib
Run Code Online (Sandbox Code Playgroud)
PS:也许与我使用Docker客户端版本的问题相关17.03.1-ce-mac12,而且我在Mac上;)
编辑:添加了requirements.txt
我不是一个樱桃专家.但是,看起来你必须指定一个主机,以确保你正在收听正确的传入地址.这对我有用:
import cherrypy
class HelloWorld(object):
@cherrypy.expose
def index(self):
return "Hello World!"
cherrypy.quickstart(HelloWorld(), '/', {'global': {'server.socket_host':'0.0.0.0','server.socket_port': 8181}})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |