问题描述
按照swagger github 安装文档中,使用docker 实验swagger-ui, 想要渲染本地swagger 文件,页面渲染失败,启动命令如下:
# 将本地swagger.json 挂载到容器里面
$ docker run -p 80:8080 -e SWAGGER_JSON=/foo/openapi.json -v /bar:/foo swaggerapi/swagger-ui
页面报错load file error, 日志信息如下:
猜测是文件挂载的时候权限不对,导致swagger 文件没有读写权限。
解决办法
直接使用如下命令启动,不挂载swagger.json, 后续手动拷贝swagger.json 到nginx 的root目录下
# 启动swagger-ui
$ docker run -p 80:8080 swaggerapi/swagger-ui
# 查看所有容器
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70a964ab2393 swaggerapi/swagger-ui "/docker-entrypoint.…" 7 seconds ago Up 5 seconds 80/tcp, 0.0.0.0:80->8080/tcp stupefied_ardinghelli
# 拷贝本地 swagger文件进容器
$ docker cp ./openapi.json /usr/share/nginx/html/
刷新浏览器,可以看到swagger-ui 正常工作: