Desculpe apresentar essa pergunta antiga, mas tive problemas com a execução do ZAP dentro de um contêiner docker no passado (realmente, AWS ECS). No meu caso, eu realmente não queria definir a porta antes do tempo (deixar o Docker gerenciar a porta especificamente, já que eu poderia estar executando mais de uma instância zap no mesmo host - precisávamos faça isso em um ambiente de CI e as coisas ficarão estranhas se você migrar para o AWS ECS). Houve dois problemas que descobri com o listener ZAP + Docker + Random Port:
- O ZAP só escutará na porta que você especificar, e se uma solicitação de entrada for para uma porta diferente , o ZAP simplesmente ignorará o tráfego, com um resultado semelhante a "Este site não pode ser alcançado "
- Por corolário, ele também só ouvirá o tráfego originado com o mesmo hostname . Então, o ZAP acha que está ouvindo
localhost
e qualquer tráfego que pareça ser destinado a algo diferente delocalhost
ele ignora.
Eu acho que os dois são realmente os mesmos. No meu caso, eu tive que trapacear para que funcionasse. Eu tive que adicionar um proxy reverso nginx para o contêiner zap (eu usei nginx porque é leve e fácil de configurar para isso). Basicamente, o fluxo parecia algo como:
Eu - > nginx no container - (reescreve o cabeçalho do host para localhost:8080
) - > Ouvinte ZAP
Não havia outro processamento no lado do nginx, apenas literalmente "ouça o tráfego em uma porta fixa (o Docker gerencia a porta externa ), reescreva os cabeçalhos do host em localhost:8080
e envie o tráfego para localhost:8080
(onde o ZAP estava escutando). É meio hacky, mas funcionou para mim.