Estoy ejecutando el servidor Kafka en mi máquina local en el puerto 9092. Estoy ejecutando un servicio en el contenedor docker usando docker-compose que necesita enviar un mensaje al servidor kafka.
Intenté escribir mi productor en el código de servicio usando 'localhost' e IP también, pero ambos no funcionan.
¿Alguien puede ayudarme a solucionar el problema?
Con docker-componer:
Use la opción network_mode para permitir la conexión a los puertos del host local
network_mode: "host"Sin ventana acoplable-componer:
Use el indicador --net para permitir la conexión a los puertos de host local
docker run -it --net=hostTambién puede usar --bandera de red
--network="host"Según la documentación oficial de Docker, estos "le dan al contenedor acceso total a los servicios del sistema local como D-bus y, por lo tanto, se consideran inseguros".
Por supuesto, si incluye su servicio en un contenedor que se ejecuta en localhost: 9092, entonces también podría ejecutarlo en un contenedor Docker y vincular sus dos contenedores Docker usando el indicador --link:
docker run -t -d myService docker run -t -d --link myService:myService_ref myOtherServicePuede corregir la dirección IP de su host y pasar esto a docker a través de docker-compose usando la opción 'extra_hosts':
Algo como:
sudo ifconfig lo0 alias 172.16.123.1Luego, en la ventana acoplable componer:
extra_hosts: - "service.localhost:172.16.123.1"Luego, dentro del contenedor, debería poder:
ping service.localhostConéctese desde el contenedor a la máquina local. Hacer alias de IP para localhost
sudo ifconfig lo:0 172.18.1.1 upAgregar a las líneas de servicio de configuración de docker-compose
extra_hosts: - 'local.machine:172.18.1.1'Y después de reiniciar el contenedor, se puede usar para conectarse
'web-socket-server' => 'ws://172.18.1.1',