He leído en https://swagger.io/docs/open-source-tools/swagger-ui/usage/installation/ que es posible alojar un archivo local (swagger.json) en swagger ui a través de docker escribiendo docker run -p 80:8080 -e SWAGGER_JSON=/foo/swagger.json -v /bar:/foo swaggerapi/swagger-ui
dado que mi archivo swagger.json se encuentra en C:\wildfly-9.0.2.Final, he escrito esto como
docker run -p 8086:8080 -e SWAGGER_JSON=/mnt/swagger.json -v C:/wildfly-9.0.2.Final:/mnt swaggerapi/swagger-uiSin embargo, todavía obtengo el ejemplo predeterminado de la tienda de mascotas y no mi propio swagger.json cuando miro http://127.0.0.1:8086/ .
He intentado cambiar lo que está escrito en la barra de exploración para que sea diferente del valor predeterminado ( https://petstore.swagger.io/v2/swagger.json ) a swagger.json, lo que da un mensaje que no se encuentra en el sitio web y en el anfitrión de la ventana acoplable
[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/"y C:/wildfly-9.0.2.Final/swagger.json que da el error en el sitio web'
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.¿Alguna idea de lo que está mal?
Hoy, estaba teniendo el mismo problema. La clave para entender es que SWAGGER_JSON debe apuntar a una ruta dentro del contenedor y no en su sistema de archivos local. Esencialmente, lo que está haciendo es: primero monte la carpeta donde tiene su swagger.json localmente y luego swagger-ui usa la variable ambiental SWAGGER_JSON para encontrarlo.
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-uiPara las personas que enfrentan este problema en mac, es un problema de permisos. De forma predeterminada, después de Catalina, la ventana acoplable no tiene permiso para permitir que sus imágenes lean archivos locales en su sistema. Una vez que se proporcionó, funcionó para mí y tomó mi archivo json de swagger local.
Para otorgar privilegios ahora, vaya a Preferencias del sistema > Seguridad y privacidad > Archivos y carpetas, y agregue Docker para Mac y su directorio compartido.