繁体   English   中英

无法从外部连接到运行CherryPy服务器的docker容器

[英]Cannot connect externally to a docker container running CherryPy server

我有一个在Docker容器上运行的简单CherryPy服务器,我无法从外部访问它。 我使用docker run -p 8181:8181 image-name运行它。 它启动很好,我看到正常的服务器日志。 如果我从容器内部尝试卷曲( curl localhost:8181 ),我会得到“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}})

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

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

PS:也许与我使用版本为17.03.1-ce-mac12的Docker客户端的问题有关,而且我在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}})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM