Ao roda esse comando:
docker run --rm williamyeh/wrk -c 10 -t 4 -d 10 http://host.docker.internal:8123/api/test
Tenho esse erro:
unable to connect to 127.0.0.1:8123 Connection refused
Estou usando um máquina linux(ubuntu)
Ao roda esse comando:
docker run --rm williamyeh/wrk -c 10 -t 4 -d 10 http://host.docker.internal:8123/api/test
Tenho esse erro:
unable to connect to 127.0.0.1:8123 Connection refused
Estou usando um máquina linux(ubuntu)
Olá Romulo.
Tudo bem?
O erro que você está enfrentando geralmente ocorre quando o serviço que você está tentando acessar não está disponível ou não está aceitando conexões na porta especificada.
Quando você está executando o comando docker run com a opção host.docker.internal, ela pode não funcionar da mesma forma em uma máquina Linux, já que essa configuração é específica para ambientes Docker no macOS e no Windows.
No Linux, você precisa garantir que o Docker consiga se comunicar corretamente com o host da máquina.
Em vez de usar host.docker.internal, experimente usar o IP da sua máquina.
Você pode descobrir o IP da sua máquina usando o comando ip addr ou hostname -I.
Exemplo de substituição do IP:
docker run --rm williamyeh/wrk -c 10 -t 4 -d 10 http://<SEU_IP>:8123/api/test
Substitua <SEU_IP> pelo IP da sua máquina.
Verifique se o serviço da sua aplicação PHP está realmente rodando e ouvindo na porta 8123.
Você pode fazer isso com o comando:
sudo netstat -tuln | grep 8123
Ou use ss:
ss -tuln | grep 8123
Se você não encontrar nenhum processo ouvindo na porta 8123, significa que o serviço não está ativo.
Verifique se o servidor PHP está em funcionamento ou reinicie-o, se necessário.
Certifique-se de que o firewall no seu sistema não está bloqueando a porta 8123.
Você pode verificar as regras de firewall com:
sudo ufw status
Se necessário, libere a porta com:
sudo ufw allow 8123
Certifique-se de que o Docker tem acesso à rede corretamente.
Caso o Docker esteja em uma rede isolada, pode ser que ele não consiga se comunicar com a sua máquina local.
Uma alternativa seria adicionar uma rede de ponte (bridge) ao comando Docker, se você estiver usando redes personalizadas.
Os logs podem fornecer mais informações sobre o que pode estar acontecendo com o serviço dentro do contêiner.
Use o seguinte comando para verificar os logs:
docker logs <container_id>
Tente acessar o endpoint diretamente da sua máquina, sem usar o wrk, com curl ou wget, para garantir que o serviço está realmente disponível:
curl http://<SEU_IP>:8123/api/test
Se você receber uma resposta, o problema pode estar no comando do wrk ou na forma como o Docker está configurado.
Tente esses passos e veja se algum deles resolve o problema.
Me envie um feedback com os resultados.
Bons estudos.
Até...