Aqui está a história.
Eu tenho um aplicativo (scala) que é executado em uma janela de encaixe, definido em docker-compose.yml
assim:
app:
image: dmydlarz/foobar
ports:
- "9000:9000"
Quando começa com o docker, ele escuta as portas de acordo com lsof -PiTCP -sTCP:LISTEN
as:
com.docke 631 darek 25u IPv4 0xd4ed8c6c9c16c231 0t0 TCP *:9000 (LISTEN)
com.docke 631 darek 26u IPv6 0xd4ed8c6c9c20bae9 0t0 TCP localhost:9000 (LISTEN)
Então, como você pode ver, ele escuta tanto no Ip4 & Ip6.
Agora, quando executo meu aplicativo a partir da linha de comando / IntelliJ, ele inicia com êxito e também escuta a porta 9000 (!).
Quando eu listo as portas abertas, aqui está o que eu tenho:
com.docke 631 darek 25u IPv4 0xd4ed8c6c9c16c231 0t0 TCP *:9000 (LISTEN)
com.docke 631 darek 26u IPv6 0xd4ed8c6c9c20bae9 0t0 TCP localhost:9000 (LISTEN)
java 53995 darek 249u IPv6 0xd4ed8c6c7ec3d8e9 0t0 TCP localhost:9000 (LISTEN)
3 processos ouvem na porta 9000, 2 deles no mesmo protocolo Ip6.
Nessa configuração, sempre o aplicativo docker está atendendo a solicitações. Sempre significa para todos os URLs que tentei:
curl http://[::1]:9000/...
curl http://127.0.0.1:9000/...
curl http://localhost:9000/...
Quando eu mato o aplicativo docker, as solicitações estão sendo atendidas pelo aplicativo local.
Eu forcei o aplicativo docker a ser iniciado apenas no Ip4 com o endereço specyfing de ligação:
app:
image: dmydlarz/foobar
ports:
- "127.0.0.1:9000:9000"
que impedem iniciar dois processos ao mesmo tempo, mas ainda assim o comportamento anterior é totalmente desajeitado para mim.
Então eu tenho 2 perguntas:
Tags networking docker port