Oi Marcelo!
Parece que você está enfrentando um problema com a configuração do requests_pathname_prefix
no Dash quando rodando a aplicação no Docker. Quando a página só exibe a mensagem "Loading" e não carrega completamente, pode ser um indício de que a aplicação não está conseguindo acessar os recursos corretamente ou há algum problema na configuração do subdiretório, como o caminho base para as URLs.
Aqui estão alguns pontos que podem te ajudar a diagnosticar e resolver o problema:
1. Verifique o Prefixo de URL e o Caminho de Recursos
Quando você usa o requests_pathname_prefix='/proex/mapa_dc'
, está dizendo ao Dash que a aplicação será servida a partir desse caminho. Isso significa que todas as URLs internas da aplicação (como o carregamento de scripts, folhas de estilo, imagens, etc.) precisam ser ajustadas para refletir esse prefixo.
Você precisa garantir que todos os recursos estáticos (CSS, JS, imagens) estejam acessíveis a partir desse caminho. No caso de você estar usando o Docker, o prefixo do contexto pode estar interferindo com o carregamento desses recursos, fazendo com que a aplicação fique "travada" na tela de "Loading".
2. Verifique a Configuração do requests_pathname_prefix
Certifique-se de que o parâmetro requests_pathname_prefix
esteja configurado corretamente no seu código Python do Dash, tanto no lado da aplicação quanto no Docker. O valor correto deve ser o mesmo que você está usando no comando do Docker (/proex/mapa_dc
).
Aqui está um exemplo de como deve estar no seu código Dash:
app = dash.Dash(__name__, requests_pathname_prefix='/proex/mapa_dc')
Esse código vai garantir que todos os caminhos relativos na sua aplicação considerem esse prefixo.
3. Ajuste do Dockerfile e do Docker Run
Além de garantir que a aplicação esteja configurada corretamente, você precisa verificar se o Docker está expondo e redirecionando as portas corretamente. O comando que você usou:
docker run -d -p 8000:8000 --name dashboard_mapeamento_dc_ufmg -e DASH_APP_PATHNAME_PREFIX="/proex/mapa_dc" dashboard_mapeamento_dc_ufmg
Aqui, você está passando a variável de ambiente DASH_APP_PATHNAME_PREFIX
para o contêiner, mas dentro do código Python da aplicação, você deve verificar se essa variável está sendo lida corretamente. Para isso, adicione algo como:
import os
pathname_prefix = os.getenv('DASH_APP_PATHNAME_PREFIX', '/default_prefix') # Usar o valor da variável de ambiente
app = dash.Dash(__name__, requests_pathname_prefix=pathname_prefix)
Se essa variável não for lida corretamente, pode ser que o prefixo não esteja sendo aplicado e a aplicação tente acessar os recursos sem o caminho correto, causando o erro de "Loading".
4. Verifique as Configurações de Proxy do Docker
Se você estiver usando um ambiente com proxy ou configurado de uma forma que altere os caminhos dos recursos (por exemplo, se os recursos estáticos não estão sendo carregados corretamente), o Dash pode não conseguir acessar os arquivos necessários. Certifique-se de que o Docker está configurado corretamente para permitir o acesso aos caminhos que você configurou.
Além disso, como você está rodando em Windows com Docker Desktop, é possível que a forma como os caminhos de rede e portas estão configurados seja uma fonte de problemas.
5. Use o Modo de Debug
Uma boa prática para identificar onde o problema está ocorrendo é rodar o Dash no modo de debug para ver mensagens de erro mais detalhadas no log.
No seu código Dash, ative o modo de debug:
app.run_server(debug=True)
Isso pode fornecer mais informações sobre o que está acontecendo por trás da tela "Loading". Além disso, verifique o log do contêiner para ver se há algum erro ou aviso que possa indicar o que está falhando.
Você pode acessar o log do contêiner com o comando:
docker logs dashboard_mapeamento_dc_ufmg
6. Verifique o Console do Navegador
Ao acessar a aplicação pelo navegador, abra as ferramentas de desenvolvedor (DevTools) e verifique o console e a aba de "Network" (Rede) para ver se há algum erro relacionado a carregamento de recursos (como arquivos JS ou CSS) ou falhas nas requisições.
Se o navegador não conseguir acessar os recursos necessários (por exemplo, arquivos estáticos), isso pode ser um sinal de que o problema está no mapeamento de caminhos dentro da aplicação, como mencionei anteriormente.
7. Verifique se a URL está correta
Quando você acessa o Docker via http://localhost:8000/proex/mapa_dc
, a URL precisa estar correta. Verifique se o servidor Dash está escutando na URL e porta esperada. Pode ser interessante tentar acessar a URL sem o prefixo /proex/mapa_dc
também (ou até mudar temporariamente para outro valor de prefixo) para ver se o problema está mesmo relacionado ao prefixo.
Boa sorte!