2
respostas

[Bug] Swagger UI não carrega o arquivo ./openapi.json

Bom dia! Segui os passos da aula 06. Infra Própria - Baixando o UI, mas ao acessar o localhost:80 o json que é carregado é o do exemplo petstore e não o que eu fiz a modificação.

O comando docker que estou executando é esse: docker run -p 80:8080 -e SWAGGER_JSON=/tmp/openapi.json -v /$(pwd):/tmp docker.swagger.io/swaggerapi/swagger-ui

O arquivo openapi.json está no meu diretório atual. Diretório esse que confirmei com o comando pwd.

A doc que estou seguindo é essa: https://github.com/swagger-api/swagger-ui/blob/HEAD/docs/usage/installation.md

Alguém sabe me dizer por que ele não está carregando o caminha ./openapi.json e sim o https://petstore.swagger.io/v2/swagger.json?

2 respostas

O problema está no caminho que você passou no volume do Docker.

O erro mais comum aqui é que, no Windows, o comando $(pwd) não funciona como no Linux/Mac. Isso faz com que o Docker não encontre seu arquivo openapi.json dentro do container.

Solução simples:

Se você está no Windows, substitua $(pwd) por o caminho absoluto do seu diretório. Por exemplo:

docker run -p 80:8080 -e SWAGGER_JSON=/tmp/openapi.json -v C:/seu/caminho/absoluto:/tmp swaggerapi/swagger-ui

Se estiver no Linux ou Mac, então use:

docker run -p 80:8080 -e SWAGGER_JSON=/tmp/openapi.json -v $(pwd):/tmp swaggerapi/swagger-ui

Atenção:

  • Garanta que o arquivo se chame exatamente openapi.json e está na pasta correta.
  • Confira as permissões de acesso ao arquivo, especialmente no Windows.
  • O nome correto da imagem é swaggerapi/swagger-ui, não docker.swagger.io/swaggerapi/swagger-ui.

Se ajustar isso, vai funcionar. Se ainda der erro, me mande qual sistema operacional você está usando e o erro que aparece no terminal.

Acabei de executar o comando abaixo:

docker run -p 80:8080 -e SWAGGER_JSON=/tmp/openapi.json -v C:\Users\rafaelc.oliveira\Desktop\swagger_sentinela\swagger-ui:/tmp swaggerapi/swagger-ui

Então ele retornou esse erro:

docker: Error response from daemon: mkdir C:Usersrafaelc.oliveiraDesktopswagger_sentinelaswagger-ui: Acesso negado.

Após isso executei dessa forma:

docker run -p 80:8080 -e SWAGGER_JSON=/tmp/openapi.json -v C:/\Users/\rafaelc.oliveira/\Desktop/\swagger_sentinela/\swagger-ui:/tmp swaggerapi/swagger-ui

Não apresentou o erro, mas continuou abrindo com o arquivo padrão da imagem e não o meu openapi.json.

Nome do arquivo confirmado. É mesmo openapi.json. Estou usando o Windows 11.

As informações no terminal são essas:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Dentro do container verifiquei que existe o arquivo dentro do diretório /tmp.

Obrigado pela ajuda!!