Ich habe einen einfachen CherryPy-Server, der auf einem Docker-Container ausgeführt wird, und kann nicht extern darauf zugreifen. Ich laufe es mit docker run -p 8181:8181 image-name
. Es startet gut und ich sehe das normale Serverprotokoll. Wenn ich eine Curl (curl localhost:8181
) aus dem Container versuche, bekomme ich die "Hello World" Antwort. Wenn ich es von meinem Rechner aus versuche, bekomme ich curl: (52) Empty reply from server
. Was mache ich falsch? Gibt es irgendeine Konfiguration, die ich verpasst habe?Externe Verbindung zu einem Andock-Container, auf dem der CherryPy-Server ausgeführt wird
Server Code:
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: Vielleicht relevant für die Frage, die ich bin mit dem Docker-Client mit Version 17.03.1-ce-mac12
und ich bin auf einem Mac;)
EDIT: Hinzugefügt Anforderungen.txt
Ich kann nicht replizieren, weil ich nicht den requirements.txt so zwei Fragen: sind Sie Curling http: // localhost: 8181? Können Sie "docker logs" auf dem Container ausführen? Irgendwelche Ergebnisse dort? –
Hi, Mano, ich habe den Inhalt von requirements.txt hinzugefügt, da ist eine Menge Krempel drin, aber ich vermute, dass wenn ich nur cherrypy verlasse, ich die gleichen Ergebnisse bekomme. Ich werde es versuchen. Ich kann Docker-Protokolle ausführen, aber ich bekomme nur ausgegeben, wenn ich localhost: 8181 aus dem Container locken. Und ja, ich curle localhost: 8181 sowohl innerhalb als auch außerhalb des Containers. – Guilherme