Skip to main content

127.0.0.1 0.0.0.0 | Docker-Compose

  • 127.0.0.1 0.0.0.0 | Docker-Compose

alt text

A diferença é em qual interface de rede do host a porta publicada vai escutar.

Exemplo no docker-compose.yml:

ports:
- "127.0.0.1:8080:80"

ou

ports:
- "0.0.0.0:8080:80"

127.0.0.1

Significa que a porta fica disponível somente no próprio host.

Exemplo:

ports:
- "127.0.0.1:8080:80"

Aqui o container expõe a porta 80, mas o Docker publica no host na porta 8080 apenas no loopback.

Na prática:

  • funciona com curl http://localhost:8080 no servidor
  • funciona com curl http://127.0.0.1:8080 no servidor
  • não funciona de outra máquina da rede acessando http://IP_DO_SERVIDOR:8080

Uso comum:

  • reverse proxy local
  • banco que só a própria máquina deve acessar
  • serviços internos
  • mais segurança por não expor na rede

0.0.0.0

Significa que a porta fica disponível em todas as interfaces de rede do host.

Exemplo:

ports:
- "0.0.0.0:8080:80"

Na prática:

  • funciona via localhost:8080
  • funciona via 127.0.0.1:8080
  • funciona via IP_DO_SERVIDOR:8080
  • funciona por qualquer interface de rede do host que aceite conexão

Uso comum:

  • API/web app que precisa ser acessada por outra máquina
  • ambiente de desenvolvimento para acessar do celular/outro PC
  • exposição pública ou interna na rede

Resumindo direto

  • 127.0.0.1 = só acessível dentro do host
  • 0.0.0.0 = acessível por qualquer IP/interface do host

Exemplo prático

Se seu servidor tem IP 192.168.1.10:

Com 127.0.0.1

ports:
- "127.0.0.1:5000:5000"
  • http://localhost:5000 no servidor: funciona
  • http://192.168.1.10:5000 de outro PC: não funciona

Com 0.0.0.0

ports:
- "0.0.0.0:5000:5000"
  • http://localhost:5000: funciona
  • http://192.168.1.10:5000: funciona também

Observação importante

Quando você escreve só isso:

ports:
- "5000:5000"

na prática o Docker publica como 0.0.0.0 por padrão na maioria dos casos.

Ou seja, sem informar IP, geralmente está expondo para todas as interfaces.


Quando usar cada um

Use 127.0.0.1 quando:

  • o serviço não deve ficar visível na rede
  • ele será consumido por Nginx, APISIX, Traefik ou outro proxy na mesma máquina
  • quer reduzir exposição

Use 0.0.0.0 quando:

  • outras máquinas precisam acessar
  • quer expor a aplicação para a rede
  • está publicando de fato o serviço