通过 Docker 向 swagger ui 提供本地文件

Mim*_*eer 3 swagger docker swagger-ui

我在https://swagger.io/docs/open-source-tools/swagger-ui/usage/installation/上读到,可以通过 docker 通过编写在 swagger ui 上托管本地文件(swagger.json) docker run -p 80:8080 -e SWAGGER_JSON=/foo/swagger.json -v /bar:/foo swaggerapi/swagger-ui

由于我的 swagger.json 文件位于 C:\wildfly-9.0.2.Final 我将其写为

docker run -p 8086:8080 -e SWAGGER_JSON=/mnt/swagger.json -v C:/wildfly-9.0.2.Final:/mnt swaggerapi/swagger-ui
Run Code Online (Sandbox Code Playgroud)

但是,在查看http://127.0.0.1:8086/时,我仍然得到默认的 petstore 示例,而不是我自己的 swagger.json 。

我尝试将探索栏中写入的内容更改为与默认值(https://petstore.swagger.io/v2/swagger.json)不同的 swagger.json ,这在网站本身和网站上都找不到码头工人主机

[error] 26#26: *2 open() "/usr/share/nginx/html/swagger.json" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /swagger.json HTTP/1.1", host: "127.0.0.1:8090", referrer: "http://127.0.0.1:8090/"
Run Code Online (Sandbox Code Playgroud)

和 C:/wildfly-9.0.2.Final/swagger.json 这在网站上给出了错误'

Fetch errorFailed to fetch C:/wildfly-9.0.2.Final/swagger.json
Fetch errorPossible cross-origin (CORS) issue? The URL origin (file://) does not match the page (http://127.0.0.1:8086). Check the server returns the correct 'Access-Control-Allow-*' headers.
Run Code Online (Sandbox Code Playgroud)

任何想法出了什么问题吗?

Han*_*ans 6

今天,我遇到了同样的问题。要理解的关键是SWAGGER_JSON必须指向容器内部的路径,而不是本地文件系统上的路径。本质上,您要做的是:首先安装本地文件夹swagger.json,然后 swagger-ui 使用SWAGGER_JSON环境变量来查找它。

docker run \
    --name swagger \
    --rm \
    -p 8080:8080 \
    -e SWAGGER_JSON=/bar/swagger.json \
    -v /c/my/local/path/to/swagger/file:/bar \
    swaggerapi/swagger-ui
Run Code Online (Sandbox Code Playgroud)