最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

spring - Springboot in host failed to connect to Nacos in docker - Stack Overflow

programmeradmin0浏览0评论

Containerized ver. of the same service can be registered in nacos: but when I start the same service on localhost, errors are given as below:

12:09:28:977  INFO 510573 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8083 (http) with context path ''
12:09:35:163 ERROR 510573 --- [           main] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, item-service register failed...NacosRegistration{nacosDiscoveryProperties=NacosDiscoveryProperties{serverAddr='172.18.10.3:8848', endpoint='', namespace='', watchDelay=30000, logName='', service='item-service', weight=1.0, clusterName='DEFAULT', group='DEFAULT_GROUP', namingLoadCacheAtStart='false', metadata={preserved.register.source=SPRING_CLOUD}, registerEnabled=true, ip='192.168.0.109', networkInterface='', port=8083, secure=false, accessKey='', secretKey='', heartBeatInterval=null, heartBeatTimeout=null, ipDeleteTimeout=null}},

com.alibaba.nacos.api.exception.NacosException: failed to req API:/nacos/v1/ns/instance after all servers([172.18.10.3:8848]) tried: java.NoRouteToHostException: No route to host
    at com.alibaba.nacos.client.naming.NamingProxy.reqApi(NamingProxy.java:552) ~[nacos-client-1.3.3.jar!/:na]
    at com.alibaba.nacos.client.naming.NamingProxy.reqApi(NamingProxy.java:491) ~[nacos-client-1.3.3.jar!/:na]
    at com.alibaba.nacos.client.naming.NamingProxy.reqApi(NamingProxy.java:486) ~[nacos-client-1.3.3.jar!/:na]
    at com.alibaba.nacos.client.naming.NamingProxy.registerService(NamingProxy.java:239) ~[nacos-client-1.3.3.jar!/:na]
    at com.alibaba.nacos.client.naming.NacosNamingService.registerInstance(NacosNamingService.java:200) ~[nacos-client-1.3.3.jar!/:na]
    at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:70) ~[spring-cloud-starter-alibaba-nacos-discovery-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    at .springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.register(AbstractAutoServiceRegistration.java:232) ~[spring-cloud-commons-3.1.3.jar!/:3.1.3]
    at com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration.register(NacosAutoServiceRegistration.java:78) ~[spring-cloud-starter-alibaba-nacos-discovery-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    at .springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.start(AbstractAutoServiceRegistration.java:133) ~[spring-cloud-commons-3.1.3.jar!/:3.1.3]
    at .springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.bind(AbstractAutoServiceRegistration.java:98) ~[spring-cloud-commons-3.1.3.jar!/:3.1.3]
    at .springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.onApplicationEvent(AbstractAutoServiceRegistration.java:86) ~[spring-cloud-commons-3.1.3.jar!/:3.1.3]
    at .springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.onApplicationEvent(AbstractAutoServiceRegistration.java:47) ~[spring-cloud-commons-3.1.3.jar!/:3.1.3]
    at .springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.boot.web.servlet.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:46) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.3.27.jar!/:5.3.27]
    at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
    at .springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:937) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at com.hmall.item.ItemApplication.main(ItemApplication.java:11) ~[classes!/:1.0.0]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
    at .springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[item-service.jar:1.0.0]
    at .springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[item-service.jar:1.0.0]
    at .springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[item-service.jar:1.0.0]
    at .springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[item-service.jar:1.0.0]

12:09:35:165  WARN 510573 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: .springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'; nested exception is java.lang.reflect.UndeclaredThrowableException
12:09:47:184  INFO 510573 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
12:09:47:200  INFO 510573 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
12:09:47:218 ERROR 510573 --- [           main] o.s.boot.SpringApplication               : Application run failed

.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'; nested exception is java.lang.reflect.UndeclaredThrowableException
    at .springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.3.27.jar!/:5.3.27]
    at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
    at .springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:937) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at com.hmall.item.ItemApplication.main(ItemApplication.java:11) ~[classes!/:1.0.0]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
    at .springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[item-service.jar:1.0.0]
    at .springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[item-service.jar:1.0.0]
    at .springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[item-service.jar:1.0.0]
    at .springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[item-service.jar:1.0.0]
Caused by: java.lang.reflect.UndeclaredThrowableException: null
    at .springframework.util.ReflectionUtils.rethrowRuntimeException(ReflectionUtils.java:147) ~[spring-core-5.3.27.jar!/:5.3.27]
    at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:79) ~[spring-cloud-starter-alibaba-nacos-discovery-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    at .springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.register(AbstractAutoServiceRegistration.java:232) ~[spring-cloud-commons-3.1.3.jar!/:3.1.3]
    at com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration.register(NacosAutoServiceRegistration.java:78) ~[spring-cloud-starter-alibaba-nacos-discovery-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    at .springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.start(AbstractAutoServiceRegistration.java:133) ~[spring-cloud-commons-3.1.3.jar!/:3.1.3]
    at .springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.bind(AbstractAutoServiceRegistration.java:98) ~[spring-cloud-commons-3.1.3.jar!/:3.1.3]
    at .springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.onApplicationEvent(AbstractAutoServiceRegistration.java:86) ~[spring-cloud-commons-3.1.3.jar!/:3.1.3]
    at .springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.onApplicationEvent(AbstractAutoServiceRegistration.java:47) ~[spring-cloud-commons-3.1.3.jar!/:3.1.3]
    at .springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.27.jar!/:5.3.27]
    at .springframework.boot.web.servlet.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:46) ~[spring-boot-2.7.12.jar!/:2.7.12]
    at .springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-5.3.27.jar!/:5.3.27]
    ... 22 common frames omitted
Caused by: com.alibaba.nacos.api.exception.NacosException: failed to req API:/nacos/v1/ns/instance after all servers([172.18.10.3:8848]) tried: java.NoRouteToHostException: No route to host
    at com.alibaba.nacos.client.naming.NamingProxy.reqApi(NamingProxy.java:552) ~[nacos-client-1.3.3.jar!/:na]
    at com.alibaba.nacos.client.naming.NamingProxy.reqApi(NamingProxy.java:491) ~[nacos-client-1.3.3.jar!/:na]
    at com.alibaba.nacos.client.naming.NamingProxy.reqApi(NamingProxy.java:486) ~[nacos-client-1.3.3.jar!/:na]
    at com.alibaba.nacos.client.naming.NamingProxy.registerService(NamingProxy.java:239) ~[nacos-client-1.3.3.jar!/:na]
    at com.alibaba.nacos.client.naming.NacosNamingService.registerInstance(NacosNamingService.java:200) ~[nacos-client-1.3.3.jar!/:na]
    at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:70) ~[spring-cloud-starter-alibaba-nacos-discovery-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    ... 35 common frames omitted

Below are env and proj configs.

Docker:

docker-compose.yml

  nacos:
    image: nacos/nacos-server:v2.1.0-slim
    container_name: nacos
    ports:
      # web 界面访问端口
      - 8848:8848
      # 程序使用 grpc 连接的端口
      - 9848:9848
      - 9849:9849
    volumes:
      - ./nacos/logs:/home/nacos/logs
    env_file:
      - ./nacos/custom.env
    restart: always
    networks:
      - hm-net
  item-service:
    build: 
      context: ./item-service
      dockerfile: Dockerfile
    container_name: item-service
    ports:
      - "8081:8081"
    networks:
      - hm-net
    depends_on:
      - mysql-singleton

item-service/application.yml:

server:
  port: 8083
spring:
  application:
    name: item-service
  cloud:
    nacos:
      server-addr: ${hm.nacos.host}:8848
  profiles:
    active: dev

item-service/application-local.yml (hard-coded IPs are only used for connecting Nacos from localhost. The application-dev.yml, which is used in container, has IP addresses replaced with container name (since they are all in a user-defined network), and connects to eahc other successfully):

hm:
  db:
    host: 172.18.0.2 # result of docker inspect
    pw: 123 # 修改为docker中的MySQL密码
  nacos:
    host: 172.18.10.3 # result of docker inspect

cmd to run item-service in localhost:

java -jar item-service/target/item-service.jar --spring.config.additional-location=optional:application-local.yml --spring.profiles.active=local

Nacos client ver:2.0.3.RELEASE

Any help is greatly appreciated! :)

发布评论

评论列表(0)

  1. 暂无评论