docker下的swagger-ui动态一个地址展示多个文档

本文档介绍了如何在Docker环境下使用Swagger-UI动态显示多个API文档。首先,通过下载Swagger-UI镜像并运行容器,然后利用-v参数将本地Swagger JSON文件映射到容器中。接着,通过编写Shell脚本获取JSON文件名并生成URL列表,更新index.html以展示多个文档。最后,讨论了Jenkins自动化构建后如何将JSON文件传输到服务器并执行脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,下载swagger-ui镜像

2,运行swagger-ui镜像

docker run -d -p 8081:8080 -v /swaggerjson:/foo swagger-ui

/swaggerjson:为本机路径,8081为本机端口;-v 将本机中的swaggerjson文件映射到swagger-ui容器中

3,docker exec -it swagger-ui容器id /bin/sh:进入到容器写shell脚本获取json文件并自动替换展示的index.html中的url

展示多个文档的主要属性是urls[{url:"",name:""},{url:"",name:""}]

脚本内容:

#! /bin/sh
NGINX_ROOT=/usr/share/nginx/html
INDEX_FILE=$NGINX_ROOT/index.html

#动态获取/foo文件夹下的json文件名(json文件为Jenkins打包后的json文件,自动通过scp传输到服务器上),并展示为[{url:"",name:""},{url:"",name:""}]到json.txt中保存
ls -1 /foo|awk -v cpath='/' 'BEGIN{print "["}{print "{url:\""cpath$0"\",name:\""$0"\"},"}END{print "]"}' > ~/json.txt

将urls当做变量
REAL_PATH=`cat ~/json.txt`

echo "$REAL_PATH"
加个前缀
prefix_path="urls:"
组合成urls:[{url:"",name:""}]
path="${prefix_path}${REAL_PATH}"","
echo $path

将页面中的url这一行换乘urls:[]
exp="'s|^.*name.*$|$path|g'"
echo $exp

sed_cmd="sed -i $exp  $INDEX_FILE"
echo $sed_cmd
eval $sed_cmd

4,Jenkins构建后的脚本操作

1,取得Jenkins自动打包之后的json文件自动传到服务器的/swaggerjson 文件夹中;

2,执行上边脚本(因为脚本是运行在docker容器里边,所以可以这样子,先把这个写好脚本的容器commit为一个镜像,并将这段脚本定义为启动容器的时候就自动启动),目前是这样的想法,感觉还有点问题,再想一下。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值