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! :)