Docker运行Nacos容器,过一会就报错UnsatisfiedDependencyException
-
问题背景:
最近要上线一个项目,由于要使用Nacos作为服务注册中心,为了方便,我就打算直接使用Docker部署Nacos,没想到Nacos启动没一会就嗝屁了,然后使用
docker logs --tail 500 nacos
查看日志发现如下错误:org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memoryMonitor' defined in URL [jar:file:/home/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-config-2.2.3.jar!/com/alibaba/nacos/config/server/monitor/MemoryMonitor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'asyncNotifyService': Unsatisfied dependency expressed through field 'dumpService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'externalDumpService': Invocation of init method failed; nested exception is ErrCode:500, ErrMsg:Nacos Server did not start because dumpservice bean construction failure : errCode: 102, errMsg: dataSource or tableName is null
-
问题原因
Nacos默认启动指令,默认使用的堆内存高达1G,由于我的服务器是免费送的,内存比较小,再加上我又下载了其它很多软件,这就导致我的服务器承受不住,已启动就直接挂了,
-
问题解决
通过执行该命令,会创建一个名为 “nacost” 的 Docker 容器,并在其中运行 Nacos 服务器。容器中的 Nacos 将以独立模式运行,使用 Derby 数据库作为数据源平台,并设置了一定的内存限制。同时,Nacos 控制台将通过主机的 8848 端口进行访问。
docker run --name nacos \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -e SPRING_DATASOURCE_PLATFORM=derby \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -p 8848:8848 \ -d nacos/nacos-server
参数详解:
docker run
:用于创建和运行一个新的 Docker 容器。- `–name nacos:为容器指定一个名称,这里是 “nacos”。
-e PREFER_HOST_MODE=hostname
:设置环境变量PREFER_HOST_MODE
的值为 “hostname
”。这个环境变量用于配置 Nacos 在集群模式下的首选主机名解析方式,将其设置为 “hostname” 表示使用主机名进行解析。-e SPRING_DATASOURCE_PLATFORM=derby
:设置环境变量SPRING_DATASOURCE_PLATFORM
的值为 “derby”。这个环境变量用于配置 Nacos 使用 Derby 数据库作为数据源平台。-e MODE=standalone
:设置环境变量MODE
的值为 “standalone”。这个环境变量用于配置 Nacos 运行在独立模式下。-e JVM_XMS=256m
和-e JVM_XMX=256m
:分别设置环境变量JVM_XMS
和JVM_XMX
的内存大小为 256MB。这些环境变量用于配置 Nacos 服务器的初始堆大小和最大堆大小。-p 8848:8848
:将容器内的端口 8848 映射到主机上的端口 8848,这样可以在主机上通过http://localhost:8848
访问 Nacos 控制台。-d
:以后台(守护进程)模式运行容器。nacos/nacos-server
:指定要使用的 Nacos 服务器的 Docker 镜像。
然后访问http://服务器IP:8848/nacos/
即可看到Nacos客户端页面了
参考文章:
- Docker部署Nacos方案,Docker部署Nacos启动失败解决方案 - 掘金 (juejin.cn)