无法将swagger服务器访问到docker容器中

时间:2017-04-18 11:55:06

标签: python swagger swagger-ui

我在python中有一个swagger服务器api,我可以在我的电脑上运行,并通过网络轻松访问用户界面。我现在尝试将此API运行到docker容器中并将其放入远程服务器。在做了#docker run'之后命令int远程服务器似乎都工作正常,但当我尝试连接时,我得到了一个ERR_CONNECTION_REFUSED响应。有趣的是,如果我进入容器,swagger服务器正在工作并回答我的请求。

这是我的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

swagger服务器的主要 .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'以及解决它的方法。

提前致谢

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。需要告诉烧瓶服务器connexion在0.0.0.0上运行,这样不仅允许本地连接,而且在swagger.yaml中更改url,其中包含docker容器所在服务器的名称< / p>

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