Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

179
Vistas
Comprobación de estado del cónsul fallida en la máquina local

Tengo Consul ejecutándose a través de docker usando docker-compose

 version: '3' services: consul: image: unifio/consul:latest ports: - "8500:8500" - "8300:8300" volumes: - ./config:/config - ./.data/consul:/data command: agent -server -data-dir=/data -ui -bind 0.0.0.0 -client 0.0.0.0 -bootstrap-expect=1 mongo: image: mongo ports: - "27017:27017" - "27018:27018" volumes: - ./.data/mongodb:/data/db command: mongod --bind_ip_all

y tenga un servicio nodejs ejecutándose en el puerto 6001 que expone un punto final /health para verificaciones de estado. Puedo registrar el servicio a través de este paquete de cónsul . Sin embargo, al visitar la interfaz de usuario del cónsul, puedo ver que el servicio tiene un estado de failing porque la verificación de estado no funciona.

La interfaz de usuario muestra este mensaje:

 Get http://127.0.0.1:6001/health: dial tcp 127.0.0.1:6001: getsockopt: connection refused

No estoy seguro de por qué no funciona exactamente, pero tengo la sensación de que puedo haber configurado incorrectamente el cónsul. Cualquier ayuda sería genial.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Consul se está ejecutando en su contenedor docker. Cuando usa 127.0.0.1 en este contenedor, se refiere a sí mismo, no a su host.

Debe usar una IP de host que su contenedor conozca (y, por supuesto, asegúrese de que su servicio sea accesible y esté escuchando en esta IP en particular).

En la mayoría de los casos, debería poder comunicarse con su host desde un contenedor a través de la IP del puente docker0 predeterminada que puede obtener con ip addr show dev docker0 desde su host como se describe en esta otra respuesta .

En mi opinión, la mejor solución es descubrir la puerta de enlace que está utilizando su contenedor, que apuntará a la IP del puente en particular en su host (es decir, el puente creado para su proyecto docker-compose al iniciarlo). Hay varios métodos que puede usar para descubrir esta IP desde el contenedor, según las herramientas instaladas y su versión de Linux.

over 4 years ago · Santiago Trujillo Denunciar

0

Si bien la respuesta de Zeitounator está perfectamente bien y responde a su pregunta directa, la solución "indirecta" a su problema sería administrar el servicio nodejs a través de docker-compose.

En mi humilde opinión, es una buena idea administrar todos los servicios involucrados con la misma herramienta, ya que sus ciclos de vida están alineados y también es fácil configurarlos para que se comuniquen entre sí (al menos ese es el caso de docker-compose ).

Además, permitir que los contenedores accedan a los servicios en el host es arriesgado en términos de seguridad. En entornos de producción, normalmente desea proteger los servicios de host de los contenedores, ya que, de lo contrario, los contenedores pierden su función de "contención".

Entonces, en su caso, necesitaría agregar el servicio nodejs a docker-compose.yml :

 services: (...) nodejs-service: image: nodejs-service-image ports: - "6001:6001" [this is only required if you need to expose the port on the host] command: nodejs service.js

Y luego su servicio Consul podría acceder a nodejs-service a través de http://nodejs-service:6001/health .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda