【问题标题】:Can't acces swagger server into docker container无法将 swagger 服务器访问到 docker 容器中
【发布时间】:2017-04-18 11:55:05
【问题描述】:

我在 python 中有一个 swagger server api,我可以在我的电脑上运行,并通过 web 轻松访问用户界面。我现在正在尝试将此 API 运行到 docker 容器中并将其放入远程服务器中。在远程服务器中执行“docker run”命令后,一切似乎都工作正常,但是当我尝试连接时,我得到了 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服务器的ma​​in.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”以及要更改什么来解决它。

提前致谢

【问题讨论】:

    标签: python swagger swagger-ui connexion


    【解决方案1】:

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

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

    【讨论】:

    • 嗨,我正在使用 .net 应用程序运行 swagger 并获得相同的行为。有什么解决方法吗?
    猜你喜欢
    • 2017-04-26
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多