我在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'以及解决它的方法。
提前致谢
答案 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')