无法访问泊坞窗容器中运行和瓶Web应用程序

问题描述:

我有以下Dockerfile,我构建一个包含ElasticSearchKibana4gunicorn无法访问泊坞窗容器中运行和瓶Web应用程序

# gunicorn-flask                                            
FROM devdb/kibana 

MAINTAINER KS <[email protected]> 

ENV DEBIAN_FRONTEND noninteractive 

RUN apt-get update 
RUN apt-get install -y python python-pip python-virtualenv gunicorn 
RUN pip install -U pip 

# Setup flask application 
RUN mkdir -p /deploy/app 

COPY gunicorn_config.py /deploy/gunicorn_config.py 
COPY app /deploy/app 
COPY run_gunicorn /etc/service/gunicorn 

RUN pip install -r /deploy/app/requirements.txt 

WORKDIR /deploy/app 

EXPOSE 5000 

蟒蛇Flask应用泊坞窗图像含有的requirements.txt依赖项位于与Dockerfile相同的路径中,名称为app的文件夹中。

我在同一个路径中也有两个文件gunicorn_config.pyrun_gunicorn

gunicorn_config.py的内容如下所示。

bind = "0.0.0.0:5000" 
    workers = 2 

run_gunicorn的内容如下所示。

#!/bin/bash 
    cd /deploy/app 

我建立使用

sudo docker build --rm -t es-kibana-gunicorn:test-10-07-15 . 

的搬运工图像I的图像保存到使用

docker save 45a61ddf8d7e > es-kb-gunicorn-13-07-15.tar 

45a61ddf8d7e哪里是图像ID的tar文件。

我将它复制到另一台服务器上,并加载图像并运行容器。

CONTAINER ID  IMAGE     COMMAND    CREATED    STATUS    PORTS                    NAMES 
d62a16fcc398  45a61ddf8d7e:latest "/sbin/my_init"  7 seconds ago  Up 6 seconds  0.0.0.0:5000->5000/tcp, 0.0.0.0:5601->5601/tcp, 0.0.0.0:9200->9200/tcp, 9300/tcp determined_shockley 

port 5000它看起来像gunicorn开始是听我的Flask web application

如果我尝试对该网络服务器执行POST,我收到以下错误消息。

Traceback (most recent call last): 
    File "update_txid.py", line 27, in <module> 
    r = requests.post("http://192.168.132.125:5000", data=json_data,headers=headers) 
    File "/usr/lib/python2.7/site-packages/requests/api.py", line 108, in post 
    return request('post', url, data=data, json=json, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/api.py", line 50, in request 
    response = session.request(method=method, url=url, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 464, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 576, in send 
    r = adapter.send(request, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 415, in send 
    raise ConnectionError(err, request=request) 
requests.exceptions.ConnectionError: ('Connection aborted.', error(111, 'Connection refused')) 

如果有人能帮我弄清楚这里有什么问题,那将会很棒。 如果您在Boot2Docker上运行这个容器,我可以同时访问端口5601 Kibana4和端口9200“ElasticSearch`

+0

你在使用发布到Web服务器?你的Python代码是怎么看的?另外:你的运行命令是怎么看的? – MentholBonbon

+0

你有信心你的应用程序正在运行,对不对?您是否尝试过从容器中运行卷曲(您可能需要安装它)。 “码头执行官 - 这是d62a16fcc398 bash'。我会从那里开始。 – 2016-05-04 11:19:16

,您需要启用从内部VirtualBox可以运行的‘boot2docker-VM’端口转发。

此链接将帮助你做到这一点:Workarounds - Port forwarding

我有同样的问题,并试图艾伦的解决办法,但不知何故VBoxManage命令有失败对我来说。

我终于找到this one其工作:

VBoxManage controlvm boot2docker-vm natpf1 "rule_name,tcp,127.0.0.1,5000,,5000"