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

来源:互联网 发布:淘宝创建店铺流程 编辑:程序博客网 时间:2024/06/05 22:50

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为一个镜像,并将这段脚本定义为启动容器的时候就自动启动),目前是这样的想法,感觉还有点问题,再想一下。


原创粉丝点击