La opción extra_hosts
en Docker Compose permite agregar entradas personalizadas al archivo /etc/hosts
de los contenedores, asociando nombres de host con direcciones IP específicas. Esto es útil cuando necesitas que un servicio en un contenedor se comunique con un nombre de host personalizado o con un servicio que no esté en la misma red de Docker.
extra_hosts
En el archivo docker-compose.yml
, puedes agregar la opción extra_hosts
dentro de la configuración de un servicio para definir una o varias entradas de host personalizadas.
version: '3.8'
services:
web:
image: nginx
extra_hosts:
- "mi_servidor:192.168.1.10"
- "otro_servidor:192.168.1.11"
ports:
- "8080:80"
En este ejemplo:
web
con la imagen de nginx
.
extra_hosts
agrega dos entradas al archivo /etc/hosts
dentro del contenedor:
mi_servidor
apuntará a 192.168.1.10
otro_servidor
apuntará a 192.168.1.11
Con esta configuración, cualquier solicitud en el contenedor web
a mi_servidor
o otro_servidor
será dirigida a las IPs respectivas.
extra_hosts
Cada entrada de extra_hosts
debe seguir el formato:
extra_hosts:
- "nombre_host:direccion_ip"
También puedes definir los hosts de una manera más estructurada en YAML:
extra_hosts:
mi_servidor: "192.168.1.10"
otro_servidor: "192.168.1.11"
Supongamos que tienes un servicio de aplicación que necesita conectarse a un servidor de base de datos externo con una IP fija y deseas hacerlo mediante un nombre de host personalizado.
version: '3.8'
services:
app:
image: my_app_image
extra_hosts:
- "db_externo:203.0.113.5"
depends_on:
- web
web:
image: nginx
ports:
- "8080:80"
En este caso, el servicio app
puede conectarse al host db_externo
, que se ha asociado a la IP 203.0.113.5
mediante extra_hosts
. Esto es útil cuando el servicio db_externo
está fuera de la red de Docker pero necesitas acceder a él desde el contenedor app
.
extra_hosts
solo afectan a los contenedores definidos en Docker Compose y no cambian la configuración de hosts en el sistema host de Docker.
Para más detalles sobre extra_hosts
, consulta la documentación oficial de Docker Compose.
Jorge García
Fullstack developer