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

Can't acces swagger server into docker container

我在 python 中有一个 swagger 服务器 api,我可以在我的电脑上 运行 并通过网络轻松访问用户界面。我现在正在尝试 运行 这个 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}"]

这是我对 build/run 的命令:

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服务器的main.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 上告诉连接到 运行 的烧瓶服务器,这样不仅允许本地连接,而且在 swagger.yaml 和 url 中更改服务器名称docker 容器位于

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