Docker最佳实践(六):安装Nacos

大家好,欢迎各位工友。 本篇呢我们就来演示一下如何在Docker中部署nacos容器,市面上的教程多多少少都有点小坑,博主磕磕绊绊测试了好几次,才算解决此问题。

1. 拉取Nacos镜像

首先,拉取对应版本的Nacos镜像文件。可以使用以下命令拉取指定版本的Nacos镜像(此处以v2.1.1为例):

docker pull nacos/nacos-server:v2.1.1
2. 挂载目录和修改配置文件

创建日志和配置文件目录,并修改application.properties配置文件:

mkdir -p /kim/nacos/logs/                      # 新建logs目录
mkdir -p /kim/nacos/conf/          
vim /kim/nacos/conf/application.properties      # 修改配置文件

application.properties中添加配置信息,端口、数据库账号密码自行补充。

server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848
 
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://xx.xx.xx.xx:xxxx/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user=xx
db.password=xxx
 
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
nacos.naming.distro.taskDispatchThreadCount=1
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.naming.expireInstance=true
3. 启动Nacos容器

运行以下命令启动Nacos容器:

docker run \
--name nacos -d \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /kim/nacos/logs:/home/nacos/logs \
-v /kim/nacos/conf/application.properties:/home/nacos/conf/application.properties \
nacos/nacos-server:v2.1.1

参数释义:

  • --name nacos: 指定容器名称为 “nacos”。
  • -d: 让容器以守护进程方式在后台运行。
  • -p 8848:8848 -p 9848:9848 -p 9849:9849: 将容器内部的端口映射到主机上。2.0以后的版本需要同时放开9848、9849端口否则java程序无法访问。
  • --privileged=true: 给予容器特权。
  • --restart=always: 设置容器在退出时重新启动。
  • -e JVM_XMS=256m -e JVM_XMX=256m: 设置Java虚拟机的初始堆内存和最大堆内存为256m。
  • -e MODE=standalone: 设置Nacos运行模式为单机模式运行。
  • -e PREFER_HOST_MODE=hostname: 设置Nacos服务优先使用主机名。
  • -v /kim/nacos/logs:/home/nacos/logs: 将主机上的日志目录挂载到容器内部。
  • -v /kim/nacos/conf/application.properties:/home/nacos/conf/application.properties: 将配置文件挂载到容器内部。
  • nacos/nacos-server:v2.1.1: 指定要运行的Nacos镜像版本。
4. 查看日志

可以使用以下命令查看Nacos容器的日志信息:

docker logs nacos 
日志截图如下:

在这里插入图片描述

此时nacos容器就安装成功了可以打开浏览器进行登录:

https:xx.xx.xx.xx:8848/nacos 账号:nacos 密码:nacos
在这里插入图片描述

5. 设置自启动

最后,设置Nacos容器自启动:

docker update --restart=always nacos

这样就完成了在Docker中部署Nacos容器的过程,确保按照以上步骤操作,即可成功部署和运行Nacos服务。

6. 错误总结
1.Caused by: java.lang.IllegalStateException: No DataSource set

在这里插入图片描述

  • 错误原因:是使用了 Mysql 最新版驱动,
    本文给出的示例已经解决此问题
  • 解决方法:
  1. 在项目代码-数据库连接 URL 后,加上 serverTimezone=UTC
  2. 如果有时差可以换成这个serverTimezone=GMT%2B8
2、nacos登录时,账号密码初始化成功,登录提示密码不对

这个是博主在Linus宿主机上部署遇到的问题,当时jdk版本是1.8升级到11后此问题解决。

7. 总结

至此博主准备部署的微服务项目基础环境已经搭建完毕,接下来就准备部署项目到docker中了,下一篇我们详细演示下如何将项目部署到服务器中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

kimloner

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

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

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

打赏作者

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

抵扣说明:

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

余额充值