Docker运行Nacos容器,过一会就报错`UnsatisfiedDependencyException`

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 
    

    Docker运行Nacos容器,过一会就报错`UnsatisfiedDependencyException`_第1张图片

  • 问题原因

    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_XMSJVM_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容器,过一会就报错`UnsatisfiedDependencyException`_第2张图片

参考文章

  • Docker部署Nacos方案,Docker部署Nacos启动失败解决方案 - 掘金 (juejin.cn)

你可能感兴趣的:(Bug记录,docker,容器,运维)