> 文档中心 > Docker - 安装Nacos并持久化配置到MySQL篇

Docker - 安装Nacos并持久化配置到MySQL篇

目录

  • Nacos安装
    • Step 1:拉取Nacos镜像
    • Step 2: 创建宿主机文件路径(文件夹)用于挂载(映射)Nacos容器内的数据
      • 2-1 先创建文件夹
      • 2-2 创建文件
      • 2-3 custom.properties内容如下
    • Step 3: 运行Nacos镜像(单机模式)
    • Step 4: Nacos配置持久化到MySQL
      • 4-1 进入容器
      • 4-2 编辑application.properties
      • 4-3 退出容器 重启容器
    • Step 5: 访问
  • MySQL安装
    • Step 1: 拉取MySQL镜像
    • Step 2: 创建MySQL文件路径用于挂载
    • Step 3: 运行MySQL镜像
    • Step 4: 更新Root用户密码
      • 4-1: 进入容器
      • 4-2: 登录MySQL
      • 4-3: 更新
      • 4-4: 更新完成后记得刷新
  • 端口开放

Nacos安装

Step 1:拉取Nacos镜像

docker pull nacos/nacos-server:1.4.1

Step 2: 创建宿主机文件路径(文件夹)用于挂载(映射)Nacos容器内的数据

2-1 先创建文件夹

mkdir -p  /opt/nacos/init.d/
mkdir -p /opt/nacos/logs

2-2 创建文件

touch custom.properties

2-3 custom.properties内容如下

#spring.security.enabled=false#management.security=false#security.basic.enabled=false#nacos.security.ignore.urls=/#management.metrics.export.elastic.host=http://localhost:9200# metrics for prometheusmanagement.endpoints.web.exposure.include=*# metrics for elastic search#management.metrics.export.elastic.enabled=false#management.metrics.export.elastic.host=http://localhost:9200# metrics for influx#management.metrics.export.influx.enabled=false#management.metrics.export.influx.db=springboot#management.metrics.export.influx.uri=http://localhost:8086#management.metrics.export.influx.auto-create-db=true#management.metrics.export.influx.consistency=one#management.metrics.export.influx.compressed=true

Step 3: 运行Nacos镜像(单机模式)

docker run -d -p 8848:8848 --restart=always -e MODE=standalone \-v /opt/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \-v /opt/nacos/logs:/home/nacos/logs \--name my-nacos nacos/nacos-server:1.4.1

Step 4: Nacos配置持久化到MySQL

4-1 进入容器

docker exec -it nacos容器id bash  来修改nacos持久化配置

4-2 编辑application.properties

vim /home/nacos/conf/application.properties# springserver.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}server.contextPath=/nacosserver.port=${NACOS_APPLICATION_PORT:8848} The auth system to use, currently only 'nacos' is supported:nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos} The token expiration in seconds:nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000} The default token:nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789} Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D# default current work dirserver.tomcat.basedir=## spring security config turn off securitynacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,//*.css,//*.js,//*.html,//*.map,//*.svg,//*.png,//*.ico,/console-fe/public/,/v1/auth/,/v1/console/health/,/actuator/,/v1/console/server/}# metrics for elastic searchmanagement.metrics.export.elastic.enabled=falsemanagement.metrics.export.influx.enabled=falsenacos.naming.distro.taskDispatchThreadCount=10nacos.naming.distro.taskDispatchPeriod=200nacos.naming.distro.batchSyncKeyCount=1000nacos.naming.distro.initDataRatio=0.9nacos.naming.distro.syncRetryDelay=5000nacos.naming.data.warmup=true# 这里配置mysql的连接spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://10.83.43.39:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=truedb.user=rootdb.password=NQULaJwY7u

4-3 退出容器 重启容器

[root@24a9fb62eb0f conf]# exit
docker restart 容器ID

Step 5: 访问

http://localhost:8848/nacos/#/login

在这里插入图片描述

MySQL安装

Step 1: 拉取MySQL镜像

docker pull mysql:5.7.34

Step 2: 创建MySQL文件路径用于挂载

/opt/mysql/conf/opt/mysql/data/opt/mysql/logs

PS:启动的时候可以设置环境变量来设置数据库密码

MYSQL_ROOT_PASSWORD :root的密码MYSQL_USER :建一个普通用户MYSQL_PASSWORD :普通用户的密码

Step 3: 运行MySQL镜像

docker run -p 3306:3306 --name tgy-mysql  --restart=always  --network=common-tgy-network \-v /opt/mysql/conf:/etc/mysql/mysql.conf.d \-v /opt/mysql/logs:/logs \-v /opt/mysql/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.34

Step 4: 更新Root用户密码

4-1: 进入容器

docker exec -it mysql容器id bash  

4-2: 登录MySQL

mysql -uroot -p

4-3: 更新

update mysql.user set authentication_string=password('NQULaJwY7u') where user='root';

4-4: 更新完成后记得刷新

flush privileges;

端口开放

1、开放端口firewall-cmd --zone=public --add-port=5672/tcp --permanent   # 开放5672端口firewall-cmd --zone=public --remove-port=5672/tcp --permanent  #关闭5672端口firewall-cmd --reload   # 配置立即生效 2、查看防火墙所有开放的端口firewall-cmd --zone=public --list-ports3.、关闭防火墙如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估systemctl stop firewalld.service4、查看防火墙状态 firewall-cmd --state5、查看监听的端口netstat -lnpt