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