无法访问Swagger服务器到Docker容器中
问题描述:
我有一个可以在我的电脑上运行并可以通过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上运行,这样不仅本地连接被允许并且在swagger.yaml中更改该网址,该连接器包含码头集装箱所在的服务器的名称
app.run(port=80, threaded=True, debug=False, host='0.0.0.0')