Docker之Nacos的持久化和集群部署

本文详细介绍了如何使用Docker部署Nacos,包括MySQL的持久化存储与远程连接设置,以及Nacos单机版和集群版的安装配置。涉及MySQL容器的创建、Nacos数据持久化、集群节点的搭建和Nginx代理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一.下载相关镜像

二.docker mysql:5.7的持久化存储及远程连接

  1.下拉镜像

  2.在宿主机中相关目录,用于挂载容器的相关数据

  3.创建mysql5.7容器

  4.修改mysql允许Navicat远程连接

  5.创建数据库nacos_config,并进行初始化

  6.持久化测试

  7.小结:使用bridge网络创建mysql5.7容器,创建并初始化数据库nacos

三. nacos-docker镜像安装nacos并配置数据库(nacos单机版)

    1.拉取镜像

    2.配置数据库(之前已完成)

    3.创建nacos容器

    4.访问nacos

    5.测试

四. nacos-docker镜像安装nacos并配置数据库(集群版)

    0.停止并删除所有容器

    1.使用自定义网络mynet启动mysql容器

    2.创建nacos集群    

    3.测试,访问任何一节点均可

    4. nginx动态代理nacos集群


 

一.下载相关镜像


  mysql/mysql-server:5.7
  nacos/nacos-server:1.1.4
  外网单节点部署,改为内网集群部署

目前网络模式为:bridge


二.docker mysql:5.7的持久化存储及远程连接


  1.下拉镜像


    docker pull mysql/mysql-server:5.7
    注:后面的mysql标签是版本号,可选择,有:5.5/5.6/5.7/8.0

  2.在宿主机中相关目录,用于挂载容器的相关数据


    mkdir -p /data/mysql/{conf,data}

    注1:conf目录
      
         必须提前上传my.cnf文件到/data/conf目录,并且它与window中的配置文件my.ini后缀名是不一样
        
         详情见:资料/my.cnf

    注2:data目录
         数据保存到宿主机中,下次需要的时候重启容器,原有数据都能被加载,不会丢失数据

  3.创建mysql5.7容器


    docker run -p 3306:3306 \
      --name mysql \
      -v /data/mysql/conf/my.cnf:/etc/my.cnf \
      -v /data/mysql/data:/var/lib/mysql \
      --privileged=true \
      --restart=always \
      -e MYSQL_ROOT_PASSWORD=123456 \
      -d mysql/mysql-server:5.7   

    参数说明:
    -p 3306:3306:宿主机端口:容器端口
    --name mysql:容器名字
    -v:挂载宿主机的一个目录, 持久化存储的关键所在,将主机目录挂载到容器对应目录,分别是:配置文件、日志文件、数据文件
    -v /data/mysql/conf:/etc/mysql/conf.d
    -v /data/mysql/logs:/logs
    -v /data/mysql/data:/var/lib/mysq
    --privileged=true:使用该参数,container内的root拥有真正的root权限, 否则,container内的root只是外部的一个普通用户权限
    --restart=always:容器自动启动参数,其值可以为[no,on-failure,always]
                      no为默认值,表示容器退出时,docker不自动重启容器
                      on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃
                      always表示,只要容器退出,则docker将自动重启容器
    -e MYSQL_ROOT_PASSWORD=123456:设置root的密码
    -d mysql/mysql-server:5.7:后台启动模式及使用的镜像  

  4.修改mysql允许Navicat远程连接


    docker exec -it mysql /bin/bash         #进入mysql5.7容器
    mysql -u root -p;                    #登录mysql服务器,之后输入mysql密码:123456    
    grant all privileges on *.* to root@'%' identified by '123456' with grant option;    #给用户授权
    flush privileges;                                #更新权限后,外部就可以使用native进行连接了

     注1:数据库字符集查看
              show variables like'character%';

  5.创建数据库nacos_config,并进行初始化


  6.持久化测试


     删除容器,重启容器,测试之前添加的数据naocs及数据是否存在

  7.小结:使用bridge网络创建mysql5.7容器,创建并初始化数据库nacos


目前网络模式为:bridge


三. nacos-docker镜像安装nacos并配置数据库(nacos单机版)


    1.拉取镜像


      docker pull nacos/nacos-server:1.1.4


    2.配置数据库(之前已完成)


    3.创建nacos容器


       docker run -d \
       -e PREFER_HOST_MODE=ip \
       -e MODE=standalone \
       -e SPRING_DATASOURCE_PLATFORM=mysql \
       -e MYSQL_MASTER_SERVICE_HOST=172.17.0.2 \
       -e MYSQL_MASTER_SERVICE_PORT=3306 \
       -e MYSQL_MASTER_SERVICE_USER=root \

### 在 Docker 部署 Nacos 时实现数据持久化的配置指南 在使用 Docker 部署 Nacos 并实现数据持久化的过程中,需要完成以下几个关键步骤:拉取镜像、创建持久化存储、初始化数据库以及启动容器。以下是详细的配置指南: #### 1. 拉取 NacosDocker 镜像 首先,确保已经安装了 Docker 环境。然后通过以下命令拉取最新版本的 Nacos 镜像: ```bash docker pull nacos/nacos-server:2.2.0 ``` 该命令会从官方镜像仓库中下载指定版本的 Nacos 镜像[^2]。 #### 2. 创建持久化存储目录 为了实现数据持久化,需要在宿主机上创建存储路径,并将这些路径挂载到容器内部。以下是具体的路径说明: - 容器内的 `/home/nacos/logs` 对应宿主机上的日志存储路径。 - 容器内的 `/home/nacos/conf` 对应宿主机上的配置文件存储路径。 - 容器内的 `/home/nacos/data` 对应宿主机上的数据存储路径。 可以通过以下命令创建宿主机上的存储目录: ```bash mkdir -p /var/lib/docker/volumes/nacos/{logs,conf,data} ``` #### 3. 初始化 MySQL 数据库 Nacos 支持通过 MySQL 实现配置元数据的持久化存储。需要执行以下操作: - 下载并解压 Nacos 的 MySQL 初始化脚本 `mysql-scheme.sql`,可以从 Nacos 的官方 GitHub 仓库获取[^3]。 - 使用 MySQL 客户端连接到数据库服务器,并执行初始化脚本: ```sql CREATE DATABASE IF NOT EXISTS nacos_config; USE nacos_config; SOURCE /path/to/mysql-scheme.sql; ``` 确保数据库名称 `nacos_config` 与 `docker-compose.yml` 文件中的配置一致。 #### 4. 修改 Nacos 配置文件 进入运行中的 Nacos 容器,将配置文件复制到宿主机上进行修改: ```bash docker cp nacos:/home/nacos/conf . docker cp nacos:/home/nacos/logs . ``` 在 `conf` 目录下找到 `application.properties` 文件(如果不存在则手动创建),添加或修改以下内容以连接 MySQL 数据库: ```properties spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://<MySQL_HOST>:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user=<MYSQL_USER> db.password=<MYSQL_PASSWORD> ``` 将 `<MySQL_HOST>`、`<MYSQL_USER>` `<MYSQL_PASSWORD>` 替换为实际的 MySQL 连接信息[^4]。 #### 5. 启动 Nacos 容器 最后,通过以下命令启动 Nacos 容器,并挂载宿主机上的存储路径: ```bash docker run --name nacos -d \ -v /var/lib/docker/volumes/nacos/logs:/home/nacos/logs \ -v /var/lib/docker/volumes/nacos/conf:/home/nacos/conf \ -v /var/lib/docker/volumes/nacos/data:/home/nacos/data \ -p 8848:8848 \ nacos/nacos-server:2.2.0 ``` 此命令将宿主机的存储路径挂载到容器内部,并将 Nacos 的服务暴露在 8848 端口上[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酒醉猫(^・ェ・^)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值