欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > docker 安装 nacos 与配置持久化详解

docker 安装 nacos 与配置持久化详解

2025/2/21 3:09:18 来源:https://blog.csdn.net/qq_36833673/article/details/145678422  浏览:    关键词:docker 安装 nacos 与配置持久化详解

        在平常的开发工作中,我们经常会用到 nacos,nacos 主要是服务注册与发现,配置管理等。服务启动时可以将自身服务的信息注册到 nacos,方便其他服务发现。可以将一些常用的配置放到配置管理中,这样修改更加的方便。那么在 docker 下如何安装nacos呢?nacos 配置的持久化又该如何实现呢?今天简单总结下主要步骤。

     1:拉取 nacos 镜像

        docker pull nacos:版本号,如果不指定版本号,那么默认拉取最新版本的镜像,即 latest 版本的镜像;如果指定版本号,那么拉取对应版本的镜像。拉取成功后,可以使用 docker images 命令查看对应的镜像:

        

        注意:如果拉取镜像失败,可能是 docker 配置文件的问题。在 /etc/docker/ 目录下,修改 daemon.json 文件中的配置的镜像加速器。镜像加速器网上搜索很多,尝试修改配置,修改完后一定要重启docker服务,不然不生效。重启docker命令:systemctl restart docker。

     2:创建挂载目录

        mkdir -p  /docker/nacos/conf

        mkdir -p /docker/nacos/logs

     3:启动容器

     (1):新建 docker-compose.yml 文件

nacos:image: nacos/nacos-server:v2.0.3container_name: nacosrestart: alwaysports:# web 界面访问端口- 8848:8848environment:- MODE=standalone# 连接 mysql 数据库,主要是为了配置的持久化- SPRING_DATASOURCE_PLATFORM=mysql # 定义使用的数据库是 mysql- MYSQL_SERVICE_HOST=mysql- MYSQL_SERVICE_PORT=3306- MYSQL_SERVICE_DB_NAME=nacos_dev- MYSQL_SERVICE_USER=root- MYSQL_SERVICE_PASSWORD=rootvolumes:- /docker/nacos/logs:/home/nacos/logs

       此处说下,为什么要配置数据库,主要是为了持久化数据。如果我们不设置数据库,nacos 对应内置的数据库,如果 nacos 容器进行重启,那么对应的配置都将会清掉,每次都要配置一大堆,特别的麻烦,这块也可以使用挂载文件进行数据持久化,但是数据量大,使用起来不太方便,所以这块推荐直接使用 mysql 数据库,这样操作起来也更加的方便。

      (2):创建 nacos 对应数据库初始化

        脚本可以在对应的安装包中有个 conf 文件夹,根据对应的数据库,找到对应的脚本,不同的版本初始化的脚本可能会有所不同,博主使用的 nacos 版本为 2.0.3,脚本初始化完之后,相关表如下:

        

      (3):启动:docker compose up -d

        docker compose up 会启动已经暂停的容器、会启动未运行但已创建的容器、如果 docker compose 文件中定义的服务对应的容器还不存在,docker compose up 会先根据指定的镜像创建容器,然后启动。-d 是非阻塞的,即不阻塞当前的命令窗口;不带 -d 是阻塞的,会阻塞当前的命令窗口。

        此处遇到的问题: 配置 nacos 连接 mysql 数据库后,启动报错,报错如下:

        大概得问题就是连接数据库报错,因为这个报错,搜索了好多解决办法,更多的解决办法是关于 connectTimeout 的问题,连接时间设置的太短了,导致超时,用这种方法没有解决,后面将MYSQL_SERVICE_HOST 改为容器内的 ip 地址,问题解决,查看容器对应容器内的 ip 地址,可以使用 docker inspect 容器名称。查看容器内的 ip 地址如下:

        

        ps:后面使用 MYSQL_SERVICE_HOST=mysql,即 services 中的服务名启动访问也正常,可能是修改了某些其他配置好了。

     4:进行测试

        (1):访问地址:http:// ip地址:8848/nacos,如访问地址:http://127.0.0.1:8848/nacos,如果访问不到,可能是 8848 端口防火墙未开导致的,不同的内核版本有不同的对应命令,如果是 Centos 内核版本,查看版本可以用 cat /etc/os-release 命令,可以先查看 8848 端口是否开了防火墙,如果没开,则添加后重启防火墙,相关命令如下:

        查看防火墙开端口:firewall-cmd --zone=public --list-ports
        添加端口:firewall-cmd --zone=public --add-port=8848/tcp --permanent
        重启防火墙:firewall-cmd --reload

        (2):nacos默认的用户名和密码都为 nacos,登录成功后页面如下:

        (3):新建配置,测试数据库持久化:

        (4):查看数据库,发现 dev 配置存在。

        (5):停止容器、删除镜像、重新启动 nacos,查看 naocs 配置是否还存在,页面如下:

        操作相关命令:

        停止容器:docker stop 容器id/容器名称

        删除容器:docker rm 容器id/容器名称

        启动容器:docker compose up -d nacos

        以上为 docker 下安装 nacos 的主要步骤,主要就是拉取镜像,然后定义 docker-compose.yml 文件 nacos 服务相关的配置。nacos 主要是服务发现与注册和配置管理。nacos 的配置可以进行持久化,推荐使用数据库,如 mysql 等,配置了数据库后,启动可能会遇到好多问题,启动失败或者配置数据没有持久化到数据库,我们搜索相关的错误进行解决。总之,碰到问题就边摸索边解决。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词