无法访问swagger服务器到docker contain

2024-04-26 06:03:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用python编写的swagger服务器api,可以在我的pc上运行,并且可以通过web轻松访问用户界面。我现在正在尝试将这个API运行到一个docker容器中,并将它放到一个远程服务器中。当我尝试连接服务器时,我拒绝了连接。有趣的是,如果我进入容器,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}"]

以下是我要构建/运行的命令:

^{pr2}$

这是开始.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)

有人知道我为什么不能和我联系吗oteserver:33788/myservice/ui“以及解决问题的方法。在

提前谢谢


Tags: run服务器bashlogapiappdatebin
1条回答
网友
1楼 · 发布于 2024-04-26 06:03:20

我终于找到了解决办法。它需要告诉connexion的flask服务器在0.0.0.0上运行,这样不仅允许本地连接,而且在大摇大摆具有docker容器所在服务器名称的url

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

相关问题 更多 >