Docker + MYSQL 启动nacos

Docker启动nacos默认用的是内存数据库,重启docker容器以后,nacos配置会丢失,非常不方便。所以需要修改为使用Mysql作为nacos的存储。

1.数据库

创建mysql数据库,过程省略,将nacos 的mysql脚本在数据库中进行导入。

mysql脚本可以在nacos的容器中找到 /home/nacos/conf/ mysql-schema.sql

# 启动一个临时nacos容器
~] docker run --name nacos-server -e MODE=standalone -d nacos/nacos-server:v2.2.3
ed3b5a88a244
# 进入容器
~] docker exec -it ed3b5a88a244
# 找到mysql脚本
[root@ed3b5a88a244 conf]# pwd
/home/nacos/conf
[root@ed3b5a88a244 conf]# ls
1.4.0-ipv6_support-update.sql  announcement.conf  application.properties  derby-schema.sql  mysql-schema.sql  nacos-logback.xml

2.目录映射

从临时nacos容器中复制配置文件、数据、log目录到映射目录

docker cp 9c37c28fd155:/home/nacos/conf /Users/domino/files/docker-data/nacos-mysql/
docker cp 9c37c28fd155:/home/nacos/logs /Users/domino/files/docker-data/nacos-mysql/
docker cp 9c37c28fd155:/home/nacos/data /Users/domino/files/docker-data/nacos-mysql/

3.修改配置

修改映射目录的application.properties配置文件

修改以下几个配置

# 数据源类型为 mysql
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
# 数据库 ip port name 等
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST:172.17.0.1}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
# 数据库用户名
db.user.0=${MYSQL_SERVICE_USER:root}
# 数据库密码
db.password.0=${MYSQL_SERVICE_PASSWORD:123456}

开启鉴权

# 开启鉴权功能
nacos.core.auth.enabled=true
# 关闭使用user-agent判断服务端请求并放行鉴权的功能
nacos.core.auth.enable.userAgentAuthWhite=false
# 配置自定义身份识别的key和value,这两个属性是auth的白名单,用于标识来自其它服务器的请求,具体实现见 com.alibaba.nacos.core.auth.AuthFilter。
nacos.core.auth.server.identity.key=authKey
nacos.core.auth.server.identity.value=shigzh
# 自定义用于生成JWT令牌的密钥,注意:原始密钥长度不得低于32字符,且一定要进行Base64编码,否则无法启动节点。
nacos.core.auth.plugin.nacos.token.secret.key=bmFjb3NfMjAyNDAxMTBfc2hpZ3poX25hY29zX3Rva2Vu
# 权限缓存开关,开启后权限缓存的更新默认有15秒的延迟,默认 : false
nacos.core.auth.caching.enabled=true

4.启动nacos容器

docker run -d -e MODE=standalone -p 8848:8848 -p 9848:9848 -v /Users/domino/files/docker-data/nacos-mysql/conf:/home/nacos/conf -v /Users/domino/files/docker-data/nacos-mysql/logs:/home/nacos/logs -v /Users/domino/files/docker-data/nacos-mysql/data:/home/nacos/data --name nacos-mysql --restart=always nacos/nacos-server:v2.2.3

PS:必须注意,有些文档只说配置8848端口,但是 2.x以上版本的nacos, 9848端口也是一定要配置的,否则可能会出现读取不到配置的情况,参考文档 https://blog.youkuaiyun.com/hmq1350167649/article/details/122432510

启动后,访问 http://localhost:8848/nacos 可以访问nacos首页,使用 nacos/nacos可以进行登录

5.重启测试

使用Mysql作为nacos容器存储目的就是防止重启nacos容器后配置丢失,在启动以后,可以添加一项配置,然后重启 nacos容器,重启后重新登录nacos,配置不丢失即视为成功。

6. 补充

使用docker-compose启动 ,用这个文件,刚才application.properties里面改的都不用改了,直接在docker-compose.yaml文件里面已经补充了
docker-compose.yaml文件 ,使用docker-compose up -d命令启动, docker-compose down 停止

services:
  nacos:
    image: nacos/nacos-server:v2.2.3
    container_name: nacos
    ports:
      - "8848:8848"
      - "9848:9848"
    environment:
      - MODE=standalone
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=10.4.7.124
      - MYSQL_SERVICE_PORT=3309
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_USER=root
      - MYSQL_SERVICE_PASSWORD=123456
      - NACOS_AUTH_ENABLE=true
      - NACOS_AUTH_IDENTITY_KEY=authKey
      - NACOS_AUTH_IDENTITY_VALUE=shigzh
      - NACOS_AUTH_TOKEN=bmFjb3NfMjAyNDAxMTBfc2hpZ3poX25hY29zX3Rva2Vu
      - NACOS_AUTH_CACHE_ENABLE=true
    volumes:
      - /data/clx/nacos/conf:/home/nacos/conf
      - /data/clx/nacos/logs:/home/nacos/logs
      - /data/clx/nacos/data:/home/nacos/data
    restart: always

参考文档:

https://developer.aliyun.com/article/972817
https://www.cnblogs.com/shigzh/p/17954917

使用 Docker 部署 MySQLNacos 可按以下步骤进行: ### 准备工作 - 确保已安装 Docker Desktop,若在 Windows 系统下,还需确保已启用 WSL 2(推荐)或 Hyper - V,且 Docker 服务正在运行[^3]。 - 确保在安装 Nacos 之前,有一个运行中的 MySQL 数据库[^2]。 ### 部署步骤 #### 1. 拉取所需镜像 拉取 MySQL 镜像(这里以 5.7 版本为例)和 Nacos 镜像(使用最新稳定版): ```bash docker pull mysql:5.7 docker pull nacos/nacos-server:latest ``` 也可以拉取指定版本的 Nacos 镜像,如 v2.3.1 版本: ```bash docker pull nacos/nacos-server:v2.3.1 ``` [^1][^3] #### 2. 创建专用网络(可选但推荐) ```bash docker network create nacos_network ``` [^3] #### 3. 启动 MySQL 容器 ```bash docker run -d --name nacos-mysql \ --network nacos_network \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=root \ -e MYSQL_DATABASE=nacos \ -e MYSQL_USER=nacos \ -e MYSQL_PASSWORD=nacos \ mysql:5.7 ``` 此命令将启动一个名为 `nacos - mysql` 的容器,使用 `nacos_network` 网络,将容器的 3306 端口映射到宿主机的 3306 端口,并设置 MySQL 的相关环境变量,如 root 密码、数据库名、用户名和用户密码等[^3]。 #### 4. 初始化 Nacos 数据库 此步骤文档未详细说明,但通常需要执行 Nacos 提供的 SQL 脚本在 MySQL 中创建相应的表结构。 #### 5. 启动 Nacos 容器并配置持久化到 MySQL 拉取 Nacos 镜像后,还需要修改配置文件选择持久化工具为 MySQL,将 NacosMySQL 做一个串联,但文档未给出具体修改配置文件和启动 Nacos 容器的命令,一般可参考 Nacos 官方文档进一步操作[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值