Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

183
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda