2017-04-18 114 views
0

我有一个可以在我的电脑上运行并可以通过web轻松访问用户界面的python中的swagger服务器api。我现在试图将这个API运行到docker容器中,并将其放入远程服务器。在执行'docker run'命令后,远程服务器似乎工作正常,但是当我尝试连接时,我收到了ERR_CONNECTION_REFUSED响应。有趣的是,如果我进入容器中,那么swagger服务器正在工作并回答我的请求。无法访问Swagger服务器到Docker容器中

这里是我的Dockerfile:

FROM python:3 
MAINTAINER Me 
ADD . /myprojectdir 
WORKDIR /myprojectdir 
RUN pip install -r requirements.txt 
RUN ["/bin/bash", "-c", "chmod 777 {start.sh,stop.sh,restart.sh,test.sh}"] 

这里是我的命令,以建立/运行:

sudo docker build -t mycontainer . 
sudo docker run -d -p 33788:80 mycontainer ./start.sh 

这里是start.sh脚本:

#!/bin/bash 

echo $'\r' >> log/server_log_`date +%Y%m`.dat 
python3 -m swagger_server >> log/server_log_`date +%Y%m`.dat 2>&1 

而且主要服务器.py:

#!/usr/bin/env python3 

import connexion 
from .encoder import JSONEncoder 


if __name__ == '__main__': 

    app = connexion.App(__name__, specification_dir='./swagger/') 
    app.app.json_encoder = JSONEncoder 
    app.add_api('swagger.yaml', arguments={'title': 'A title'}) 
    app.run(port=80, threaded=True, debug=False) 

有谁知道为什么我无法访问'myremoteserver:33788/myservice/ui'以及要解决它的问题。

在此先感谢

回答

0

我终于设法找出解决方案。需要告诉连接器的服务器在0.0.0.0上运行,这样不仅本地连接被允许并且在swagger.yaml中更改该网址,该连接器包含码头集装箱所在的服务器的名称

app.run(port=80, threaded=True, debug=False, host='0.0.0.0') 
相关问题