当前位置: 首页 > news >正文

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=8848spring.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=xxxnacos.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中了,下一篇我们详细演示下如何将项目部署到服务器中。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 9.动态导航栏怎么做
  • uniapp微信小程序 canvas绘制圆形半透明阴影 createCircularGradient函数不支持透明度部分解决方案
  • 100道C/C++面试题
  • mysql8.4.2数据库做主从复制
  • 【Python基础】Python六种标准数据类型中哪些是可变数据,哪些是不可变数据
  • SQL Zoo 9-.Window functions
  • linux证书生成详解
  • 堆的实现(偷懒版)
  • DVWA DOM Based Cross Site Scripting (DOM型 XSS)
  • 第三方jar自带logback导致本地日志文件不生成
  • 前端(HTML + CSS)小兔鲜儿项目(仿)
  • CSS3下拉菜单实现
  • windows 版本Jenkins的Jenkinsfile中共享变量
  • 数据结构--第七天
  • 【AI绘图】基于Midjourney开发的AI绘画平台,对中文很友好!
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [LeetCode] Wiggle Sort
  • [译]Python中的类属性与实例属性的区别
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • HTTP那些事
  • JavaScript 一些 DOM 的知识点
  • LintCode 31. partitionArray 数组划分
  • linux学习笔记
  • Sass 快速入门教程
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vue 重置组件到初始状态
  • Web设计流程优化:网页效果图设计新思路
  • 从PHP迁移至Golang - 基础篇
  • 电商搜索引擎的架构设计和性能优化
  • 将回调地狱按在地上摩擦的Promise
  • 如何进阶一名有竞争力的程序员?
  • 手写一个CommonJS打包工具(一)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 自动记录MySQL慢查询快照脚本
  • MPAndroidChart 教程:Y轴 YAxis
  • 阿里云ACE认证之理解CDN技术
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ## 1.3.Git命令
  • (10)STL算法之搜索(二) 二分查找
  • (C语言)球球大作战
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (七)Knockout 创建自定义绑定
  • (十六)视图变换 正交投影 透视投影
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (一) springboot详细介绍
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)visual stdio 书签功能介绍
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .net 4.0发布后不能正常显示图片问题
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 中的轻量级线程安全
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .NET中两种OCR方式对比