Volver a la página principal
martes 5 noviembre 2024
9

Cómo usar extra_hosts en Docker Compose

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.

Ejemplo de uso de 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"

Explicación del ejemplo

En este ejemplo:

  • Se define un contenedor web con la imagen de nginx.
  • La opción 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.

Sintaxis de 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"

Ejemplo avanzado con varios servicios

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.

Consideraciones

  • Persistencia: Las entradas de 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.
  • Compatibilidad: Esta configuración es útil para pruebas locales o para entornos controlados, pero puede no ser ideal para entornos en producción debido a la posible variabilidad de las IPs de los hosts externos.

Referencia oficial

Para más detalles sobre extra_hosts, consulta la documentación oficial de Docker Compose.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer