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.csdn.net/hmq1350167649/article/details/122432510

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

5.重启测试

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

6. 补充

使用docker-compose启动
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
      - 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_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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值