Docker快速部署方案 ---- Nacos

Docker 启动 Nacos 2.1.2

Docker快速部署方案 ---- Nacos,Docker 启动 Nacos2.1.2。

1. 拉取镜像

docker pull nacos/nacos-server:v2.1.2

2. 新建挂载目录

mkdir -p /opt/docker/nacos/{data,conf,logs}

3. 创建nacos数据库

为将nacos持久化到mysql中,我们需要新建nacos数据库,我们可以从github上拿到库表语句,也可以在已经拉取的nacos镜像中获取,因为版本迭代的原因,我们这里选择从nacos镜像中获取。

  • 非挂载形式启动nacos,可以在浏览器ip:port/naocs访问但没必要
docker run -d --name nacos \
-p 8848:8848 \
-e MODE=standalone \
nacos/nacos-server:v2.1.2
  • 启动nacos容器后,将nacos配置文件目录**(默认在/home/nacos/conf/)整体,也可以是基本必要的文件(application.properties、mysql-schema.sql、nacos-logback.xml)**复制到宿主机中,删除容器
docker cp nacos:/home/nacos/conf/ /opt/naocs/conf   ---> 从容器中复制出来整体配置
docker rm -f nacos         ---> 删除nacos容器
  • 拿到数据库表文件**(/opt/nacos/conf/mysql-schema.sql)**,在指定数据库nacos下执行(可以选择客户端或者命令行操作)

4. 启动容器

目标以挂载本机data、logs、conf形式启动nacos并可以成功访问

  • 分别将配置文件和日志配置文件拷贝到挂载目录conf下
cp /opt/naocs/conf/application.properties /opt/docker/nacos/conf/application.properties
cp /opt/naocs/conf/nacos-logback.xml /opt/docker/nacos/conf/nacos-logback.xml
  • 修改application.properties的配置(可选),采用添加默认值的方式,这样不会影响指定命令行的参数
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}

# 修改此行,将SPRING_DATASOURCE_PLATFORM的默认值""改为mysql
spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}

# 修改此行,添加MYSQL_SERVICE_HOST的默认值为192.168.120.1,MYSQL_SERVICE_DB_NAME的默认值为nacos
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST:192.168.120.1}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}

# 修改此行,添加MYSQL_SERVICE_HOST的默认值为192.168.120.1,MYSQL_SERVICE_DB_NAME的默认值为nacos
db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST:192.168.120.1}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}

# 修改此行,添加MYSQL_SERVICE_USER的默认值为root
db.user=${MYSQL_SERVICE_USER:root}

# 修改此行,添加MYSQL_SERVICE_PASSWORD的默认值为root
db.password=${MYSQL_SERVICE_PASSWORD:root}
### 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 dir
server.tomcat.basedir=
## spring security config
### turn off security
nacos.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/**}
  • 启动容器,运行之前请确保之前启动的容器已被删除,访问ip:8848/nacos登录控制台
docker run -d --name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-v /opt/docker/nacos/logs:/home/nacos/logs \
-v /opt/docker/nacos/data:/home/nacos/data \
-v /opt/docker/nacos/conf:/home/nacos/conf \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
# 防坑,此处一定要填写数据库的真实IP,使用localhost或者1227.0.0.1或导致database no set错误,可以通过 ifconfig 查看
-e MYSQL_SERVICE_HOST=172.26.21.156 \   
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
nacos/nacos-server:v2.1.2

参数说明

  • MODE=standalone 单节点模式
  • SPRING_DATASOURCE_PLATFORM=mysql 使用mysql数据库连接方式
  • MYSQL_SERVICE_HOST=192.168.120.1 指定数据库地址
  • MYSQL_SERVICE_PORT 数据库端口
  • MYSQL_SERVICE_USER 数据库用户名
  • MYSQL_SERVICE_PASSWORD 数据库密码
  • MYSQL_SERVICE_DB_NAME 数据库名称
  • -p 8848:8848 -p 9848:9848 -p 9849:9849 端口映射
  • –name nacos 容器命名
  • –restart=always 任意时候重启容器,开机就能自动启动容器(需设置docker为开机自启)
  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBlade 是一个由商业级项目升级优化而来的SpringCloud分布式微服务架构、SpringBoot单体式微服务架构并存的综合型项目,采用Java8 API重构了业务代码,完全遵循阿里巴巴编码规范。采用Spring Boot 2 、Spring Cloud Hoxton 、Mybatis 等核心技术,同时提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。 特点: 1、采用前后端分离的模式,前端开源两个框架:Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI) 2、后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:BladeTool 3、BladeTool已推送至Maven中央库,直接引入即可,减少了工程的臃肿,也可更注重于业务开发 4、集成Sentinel从流量控制、熔断降级、系统负载等多个维度保护服务的稳定性。 5、注册中心、配置中心选型Nacos,为工程瘦身的同时加强各模块之间的联动。 6、使用Traefik进行反向代理,监听后台变化自动化应用新的配置文件。 7、极简封装了多租户底层,用更少的代码换来拓展性更强的SaaS多租户系统。 8、借鉴OAuth2,实现了多终端认证系统,可控制子系统的token权限互相隔离。 9、借鉴Security,封装了Secure模块,采用JWT做Token认证,可拓展集成Redis等细颗粒度控制方案。 10、稳定生产了两年,经历了从Camden -> Hoxton的技术架构,也经历了从fat jar -> docker -> k8s + jenkins的部署架构 11、项目分包明确,规范微服务的开发模式,使包与包之间的分工清晰。   SpringBlade 更新日志: v3.0.3 新增blade-develop的dockerfile 新增blade-develop推送docker配置 新增saber的dockerfile 新增kuboard k8s部署脚本 新增kuboard k8s部署方案 优化pom配置适配新版部署方案 优化swagger加载逻辑默认开启knife4j
Docker是一种容器化解决方案Docker Compose可以简化多个容器的管理和部署流程。Nacos是一个用于服务发现、配置管理和动态DNS服务的开源平台。Node.js是一个基于JavaScript的开源、跨平台的运行时环境,用于构建可扩展的网络应用程序。MongoDB是一个高性能、文档型NoSQL数据库,适用于处理大量的结构化和非结构化数据。MySQL是一个开源的关系型数据库管理系统,用于存储和管理结构化数据。Redis是一个基于内存的高性能键值存储系统,用于缓存和数据持久化。Seata是一个开源的分布式事务解决方案,用于保证分布式系统中的数据一致性。 通过Docker Compose,我们可以轻松地将这些不同的组件和服务以容器化的方式部署在一台或多台服务器上。我们可以使用Docker Compose的配置文件定义每个服务的镜像、端口映射、环境变量等设置。在这个场景中,我们可以将Nacos、Node.js、MongoDB、MySQL、Redis和Seata分别作为独立的服务进行定义。 使用Docker Compose可以简化部署过程,只需运行一个命令即可启动整个应用程序的容器群组。Docker会自动拉取和部署所需的镜像,启动容器,并通过网络连接各个服务。Nacos可以作为服务发现和配置中心,用于管理和注册各个服务的地址和配置信息。Node.js可以作为应用程序的后端逻辑进行开发,通过Nacos来发现和调用各个后端服务。MongoDB作为主要的数据存储,MySQL和Redis可以作为辅助数据存储和缓存。Seata可以用于管理和控制分布式事务,确保数据一致性。 总之,使用Docker Compose可以方便地将Nacos、Node.js、MongoDB、MySQL、Redis和Seata等组件集成在一起,并通过容器化的方式进行部署。这样做可以极大地简化应用程序的开发和部署过程,并提供高度可扩展的架构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值