Dockerコンテナで実行されている単純なCherryPyサーバーがあり、外部からアクセスできません。私はdocker run -p 8181:8181 image-name
を使って実行します。それは正常に起動し、私は正常なサーバーのログを参照してください。コンテナの中からカール(curl localhost:8181
)を試してみると、「Hello World」というレスポンスが得られます。私のマシンから試してみると、私はcurl: (52) Empty reply from server
になる。私は間違って何をしていますか?私が逃した設定はありますか?CherryPyサーバーを実行しているドッカーコンテナに外部から接続できません
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:私はバージョンとドッカークライアントを使用している質問に多分関連、私はMacにいる;)
EDIT:Added requirements.txt
私は2つの質問がrequirements.txtを持っていないので、私は複製することはできません: あなたはカーリングのhttpですか?コンテナに 'docker logs'を実行できますか?そこに結果はありますか? –
こんにちは、マノ、requirements.txtの内容を追加しました。そこにはたくさんの混乱がありますが、チェリーピープルだけを残しておけば同じ結果が得られます。私はそれを試みます。私はドッカーログを実行することができますが、コンテナの中からlocalhost:8181をカールすると出力が得られます。そして、はい、私はlocalhost:8181を容器の内側と外側の両方に巻きつけています。 – Guilherme