gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:36:05 26 4
gpt4 key购买 nike

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

需求.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}})

关于python - 无法从外部连接到运行 CherryPy 服务器的 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43988512/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com