后端部署
环境要求
- JDK >= 17(根据脚手架配置)
- Oracle >= 11g
- Maven >= 3.5
- Redis >= 3.2
- Lombok 插件
获取脚手架
- 方式1:请参考如何搭建一个后端脚手架
- 方式2:请点击此处跳转git获取脚手架
提示
方式2需要在虚拟桌面中访问
本地启动
由于nacos 2.x 新增GRPC端口,虚拟桌面内本地开发时,需要业务方开发人员在本地IntelliJ IDEA的启动项中配置偏移量及申请访问IP权限;
注意
截图为示例,请实际参考 配置偏移量及申请访问IP权限后的信息
1:配置偏移量 -Dnacos.server.grpc.port.offset=2477 -DNACOS_ADDR=10.19.59.232:8848
2:申请访问IP权限 10.19.59.232
端口:11325
配置Maven私服
我们提供了两种方式来配置Maven私服,建议使用推荐方式。
推荐方式 在IntelliJ IDEA中指定工程根目录下的settings.xml
文件,如下图所示:
覆盖安装 使用本地安装的maven覆盖IDEA插件,并将以下内容添加至本地settings.xml
文件中的<profiles>
标签中
xml
<profile>
<id>hisense-nexus</id>
<repositories>
<!-- release库 -->
<repository>
<id>hisense-nexus</id>
<name>hisense-nexus</name>
<url>http://nexus.hisense.com/repository/maven-public/</url>
</repository>
<!-- snapshot库 -->
<repository>
<id>hisense-nexus-snapshot</id>
<name>hisense-nexus-snapshot</name>
<url>http://nexus.hisense.com/repository/maven-public-snapshot/</url>
<layout>default</layout>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>hisense-nexus</id>
<name>hisense-nexus</name>
<url>http://nexus.hisense.com/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
其他详细配置参考Nexus仓库使用指引及规范或者联系 Pangea 团队。
常见问题:依赖下载失败
使用「海信私服」后,有时依旧下载依赖失败,检查是否使用idea内嵌的Maven,这个内嵌的Maven通常比较新,但不一定稳定,而且往往也会和在命令行使用的Maven不是一个版本。请换成本地环境自带maven,maven版本>=3.0。
配置脚手架
配置文件介绍
脚手架的配置文件路径为src/main/resources/
,配置文件提供yml
和properties
两种格式,业务方可根据实际需要在生成脚手架时选择。 盘古团队根据环境、作用等因素提供了6个配置文件,以对应不同的环境,具体配置文件如下:
配置文件名 | 作用 | 备注 |
---|---|---|
bootstrap.yml | 在应用程序启动之前加载,配置早期加载的信息。 | nacos、服务暴露端口、服务名等 |
application.yml | 在应用程序启动时加载,配置应用程序的默认属性。 | mybatis、链接超时时间、数据库连接池信息等 |
application-dev.yml | 当spring.profiles.active=dev时,应用程序启动加载,配置开发环境相关的属性。 | 开发数据库、缓存、日志级别等。 |
application-test.yml | 当spring.profiles.active=test时,应用程序启动加载,配置测试环境相关的属性。 | 测试数据库、缓存、日志级别等。 |
application-uat.yml | 当spring.profiles.active=uat时,应用程序启动加载,配置预发环境相关的属性。 | 预发数据库、缓存、日志级别等。 |
application-prod.yml | 当spring.profiles.active=prod时,应用程序启动加载,配置生产环境相关的属性。 | 生产数据库、缓存、日志级别等。 |
当spring.profiles.active
配置时,以spring.profiles.active=dev
为例,配置文件加载顺序为: bootstrap.yml
> application-dev.yml
> application.yml
提示
配置文件的个数及作用,业务方可根据实际情况自行创建配置。
脚手架提供的配置文件中,常用配置均使用占位符表达式(${环境变量:默认值})
。这种表达式允许在配置文件中设置一个默认值,当环境变量未设置时, 使用默认值,占位符表达式常用于信云+部署时的环境变量中使用。
必要修改项介绍
初始化后的脚手架配置文件中虽然默认了配置,做到了生成即启动的原则,但有些默认配置并不能满足业务方的实际需求,需要业务方在业务编码之前进行必要修改。以下列举业务方在脚手架初始化后的常用修改项:
1. 注册中心配置
盘古采用nacos注册中心,相关配置定义在bootstrap.yml
中配置,相关默认配置如下:
yaml
spring:
cloud:
nacos:
#nacos注册中心地址,不同环境配置不同的nacos注册中心地址,环境变量key的定义为:NACOS_ADDR ,可选项如下:
# nacos-server-pangea-pangeav3-uat.clouddev.hisense.com 为生产环境的nacos注册地址
# nacos-server-offline.clouddev.hisense.com 为开发环境、测试环境、预发环境的nacos注册地址
server-addr: http://${NACOS_ADDR:nacos-server-offline.clouddev.hisense.com}
discovery:
server-addr: ${spring.cloud.nacos.server-addr}
#nacos注册中心的命名空间,非必要情况无需修改
namespace: ${NAME_SPACE:pangea}
#nacos注册中心的分组,dev表示开发,test表示测试,uat表示预发,prd表示生产,在部署时需要注意修改
group: ${NACOS_GROUP:dev}
config:
server-addr: ${spring.cloud.nacos.server-addr}
file-extension: yaml
#nacos配置中心的命名空间,非必要情况无需修改
namespace: ${NAME_SPACE:pangea}
不同环境需要配置不同的nacos注册中心,各环境的nacos注册中心地址需在信云+部署时环境变量中定义,以替换默认配置。nacos注册中心地址相对应的环境变量key定义为:NACOS_ADDR
, 配置文件的默认配置nacos-server-pangea-pangeav3-uat.clouddev.hisense.com
为本地启动、开发环境、测试环境使用,不可用于其他环境。其他环境的配置请联系Pangea 团队获取。
2. 数据库连接配置
数据库的配置根据脚手架生成过程中选择的数据库组件来确定的,默认数据库为oracle,配置在application-*.yml
的特定环境配置文件中,以oracle数据为例,相关配置如下:
yaml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@${ORACLE_HOST:1.2.3.4}:1521:${ORACLE_PID:test}
username: ${ORACLE_NAME:username}
password: ${ORACLE_PASSWORD:password}
业务方在业务编码之前应提前自行申请数据库资源,不同的环境需要配置不同的数据库。在信云+部署不同的环境时,应在对应的特定环境配置文件中替换默认的数据库连接信息; 默认的数据库配置仅作demo演示使用,会定期清理数据。业务方的数据库申请请联系业务方对应db工程师。
3. 服务名及端口配置
服务名及端口配置定义在bootstrap.yml
中配置,如下:
yaml
server:
#服务暴露的端口号,业务方可按需配置
port: ${PORT:8899}
#该服务所有接口映射的统一路径,业务方可按需配置,如不配置,将按照 spring.application.name 注册和调用服务时
#servlet:
#context-path: /demo
spring:
application:
#服务注册在nacos注册中心的服务名称,可自定义,业务方可按需配置
name: ${YML_NAME:pangea-demo}
profiles:
#服务运行时的环境,取值于application-*.yml中的*部分,默认为dev,业务方可根据部署的环境按需配置,
active: ${PROFILE:dev}
注意
context-path
对应网关调用的映射地址,可按需自行更改,如保留,则需要在nacos的gateway-router中配置对应的映射地址(例:在postman中,context-path连接端口号
和接口地址
),如下图:
4. 缓存连接配置
缓存的配置根据脚手架生成过程中选择的缓存组件来确定的,如未勾选缓存组件,请忽略该项配置。默认缓存为redis,配置在application-*.yml
的特定环境配置文件中,以redis缓存为例,相关配置如下:
单体缓存配置
yaml
spring:
data:
redis:
host: ${REDIS_HOST:127.0.0.1}
port: ${REDIS_PORT:6379}
password: ${REDIS_PASSWORD:demo}
哨兵模式配置
yaml
spring:
data:
redis:
password: ${REDIS_PASSWORD:demo}
sentinel:
master: mymaster
nodes: ${REDIS_HOST:1.1.1.1:26379,2.2.2.2:26379,3.3.3.3:26379}
redis配置目前支持哨兵模式和单体模式,业务方可根据实际情况选择。业务方在业务编码之前应提前自行搭建redis资源,不同的环境需要配置不同的redis资源。在信云+部署不同的环境时,应在对应的特定环境配置文件中替换默认的redis连接信息。
建议
Pangea 团队建议非生产环境使用单体模式,生产环境建议使用哨兵模式。
信云+部署
业务方首先需要将脚手架代码上传至业务方的Git代码仓库
后再进行信云+部署,在信云+的部署操作请参考Devops使用手册,这里只提供部署时需要的相关配置。
CI/CD
- 代码编译
shell
# 脚本运行过程中,日志冗余输出
set -x
# CMD 脚本执行的工作目录为 pipeline 流水线工作空间,包含 clone 的代码
# 进入从git仓库拉取下来的代码目录下
cd pangea-demo
echo "mvn --version"
mvn -q --version
echo "mvn package start ..."
mvn -s ./nexus-settings.xml clean package -Dmaven.test.skip=true
ls -l .
注意
基础镜像需要选择jdk: 17+maven:3.6.1
- 镜像构建
shell
FROM registry.hisense.com/ubi8/openjdk-17:1.4
ADD ./target/*.jar /deployments/
ENV TZ=Asia/Shanghai
服务部署
健康检查配置
注意: 端口的配置应根据业务方实际部署时填写。