docker 安装 nacos v1.4.7
1、下载镜像
Section titled “1、下载镜像”docker pull nacos/nacos-server:v1.4.72、创建容器网络
Section titled “2、创建容器网络”docker network create nacos_network3、启动容器
Section titled “3、启动容器”docker run --name nacos -d \-p 8848:8848 \--network nacos_network \-e MODE=standalone \nacos/nacos-server这个命令会启动一个名为 nacos 的容器,并将其绑定到物理机的 8848 端口。同时,它还会将容器添加到之前创建的 nacos_network 容器网络中,并设置容器模式为 standalone(单机)。
docker run --name nacos2.2.0 -d \-p 8848:8848 \-p 9848:9848 \--network nacos_network \-e MODE=standalone \nacos/nacos-server:v2.2.0环境:Nacos版本 2.2.0,docker镜像,centos8
问题描述:页面访问正常,curl -X POST正常,但是使用Java SDK集成发布失败
原因定位:跟踪源码,异常描述: Client not connected,current status:STARTING,客户端gRPC无法和服务端创建链接,在Nacos2.X版本中,增加了gRPC通信端口,需要由docker一并映射出来,否则就会出现无法初始化连接。
解决方案:在docker容器中映射9848端口
4、访问 Nacos Web 控制台
Section titled “4、访问 Nacos Web 控制台”启动完 Nacos 容器后,就可以通过 http://虚拟机IP:8848/nacos 访问 Nacos Web 控制台了。在控制台上,可以进行服务注册、配置管理和服务发现等操作
5、配置 Nacos 数据库存储
Section titled “5、配置 Nacos 数据库存储”默认情况下,Nacos 使用内置的 Derby 数据库进行数据存储。虽然 Derby 是一个轻量级的数据库,但当数据量较大时,它可能会导致性能瓶颈和数据丢失的问题。因此,建议将 Nacos 数据库存储改为 MySQL 或 PostgreSQL 等外部数据库。
步骤 1:安装 MySQL 数据库
Section titled “步骤 1:安装 MySQL 数据库”首先,需要在本地机器或其他服务器上安装 MySQL 数据库,请参照https://gitee.com/wangzhidao/document-warehouse/tree/master/文档/docker。
步骤 2:创建 Nacos 数据库和用户
Section titled “步骤 2:创建 Nacos 数据库和用户”安装完成 MySQL 后,启动mysql,容器需要创建一个新的数据库和用户,并授予其访问权限。可以使用以下命令创建一个名为 nacos 的数据库和用户:
docker exec -it [容器ID] /bin/bashmysql -u root -pCREATE DATABASE nacos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'nacos'@'%' IDENTIFIED BY '123456';GRANT ALL PRIVILEGES ON nacos.* TO 'nacos'@'%';FLUSH PRIVILEGES;EXIT;EXIT;这样,就创建了一个名为 nacos 的数据库和一个名为 nacos 的用户,并赋予它们访问权限。
步骤 3:修改 Nacos 配置文件
Section titled “步骤 3:修改 Nacos 配置文件”在启动 Nacos 容器之前,需要修改配置文件以将 Nacos 数据库存储改为 MySQL。
首先,需要找到容器内部的 nacos 目录,可以使用以下命令进入容器内部:
docker exec -it nacos /bin/bashcd /home/nacos/conf在 conf 目录下,可以找到 application.properties 文件。将该文件拷贝到本地机器上,并使用文本编辑器打开该文件。
1 、从容器拷贝文件到宿主机
docker cp 容器名:容器中要拷贝的文件名及其路径 要拷贝到宿主机里面对应的路径
docker cp nacos:/home/nacos/conf/application.properties /home/wzd/2、从宿主机拷贝文件到容器
docker cp 宿主机中要拷贝的文件名及其路径 容器名:要拷贝到容器里面对应的路径
docker cp /home/wzd/application.properties nacos:/home/nacos/conf/application.properties修改 application.properties,内容如下
# springserver.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}server.contextPath=/nacosserver.error.include-message=ALWAYSserver.port=8848spring.datasource.platform=mysqlnacos.cmdb.dumpTaskInterval=3600nacos.cmdb.eventTaskInterval=10nacos.cmdb.labelTaskInterval=300nacos.cmdb.loadDataAtStart=falsedb.num=1db.url.0=jdbc:mysql://192.168.130.128:3305/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=truedb.user=nacosdb.password=123456### The auth system to use, currently only 'nacos' is supported:nacos.core.auth.system.type=nacos
### The token expiration in seconds:nacos.core.auth.default.token.expire.seconds=18000
### The default token:# 注意:nacos v1.4.7是开启鉴权的,所以需要在application.properties中的配置信息。# 在application.properties找到nacos.core.auth.default.token.secret.key,# 默认情况下nacos.core.auth.default.token.secret.key是没有值得,所以导致启动nacos后报上面的错,# 根据官网说的,需要在启动nacos前给nacos.core.auth.default.token.secret.key填个256bit的token值,# 也可以复制官网上给的默认token值,SecretKey012345678901234567890123456789012345678901234567890123456789,这样问题就解决了。nacos.core.auth.default.token.secret.key=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=falsenacos.core.auth.enable.userAgentAuthWhite=falsenacos.core.auth.server.identity.key=nacos.core.auth.server.identity.value=server.tomcat.accesslog.enabled=falseserver.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D# default current work dirserver.tomcat.basedir=file:.## spring security config### turn off securitynacos.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=false
nacos.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步骤 4:重新启动 Nacos 容器
Section titled “步骤 4:重新启动 Nacos 容器”修改完配置文件后,需要重新启动 Nacos 容器。可以使用以下命令停止并删除之前的容器:
docker stop nacos && docker rm nacos重新启动容器
docker run --name nacos -d \-p 8848:8848 \--network nacos_network \-e MODE=standalone \-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=192.168.130.128 \-e MYSQL_SERVICE_DB_NAME=nacos \-e MYSQL_SERVICE_USER=nacos \-e MYSQL_SERVICE_PASSWORD=nacos \nacos/nacos-server:v1.4.7访问 http://192.168.130.128:8848/nacos,账号密码分别为nacos和nacos,即可登录