Skip to content

后端部署

环境要求

  • JDK >= 17(根据脚手架配置)
  • Oracle >= 11g
  • Maven >= 3.5
  • Redis >= 3.2
  • Lombok 插件

获取脚手架

提示

方式2需要在虚拟桌面中访问

本地启动

由于nacos 2.x 新增GRPC端口,虚拟桌面内本地开发时,需要业务方开发人员在本地IntelliJ IDEA的启动项中配置偏移量及申请访问IP权限;

注意

截图为示例,请实际参考 配置偏移量及申请访问IP权限后的信息

1:配置偏移量 -Dnacos.server.grpc.port.offset=2404 -DNACOS_ADDR=10.19.59.232:8848 2:申请访问IP权限 10.19.59.232 端口:11252申请与云外四层网关访问权限申请与云外四层网关访问权限

配置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/,配置文件提供ymlproperties两种格式,业务方可根据实际需要在生成脚手架时选择。 盘古团队根据环境、作用等因素提供了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

服务部署

  • 健康检查配置

    注意: 端口的配置应根据业务方实际部署时填写。