# 父类集成
# 概述
这里是pom.xml公共父类的集成配置使用说明,即parent-pom.xml文件,这里是对springboot的二次调整的升级。
# 本内容你将获取
- alinesno-parent类的集成配置
- 常用的命令行和工具集成使用
# 父类说明
集成的父类xml配置如下:
<parent>
<groupId>com.alinesno.cloud</groupId>
<artifactId>alinesno-cloud-starter-parent</artifactId>
<version>2.1.3-Alpha</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
父类版本是基于spring-boot-2.7.4,同时增加了一些额外的功能集成,主要集成能力如下:
| 序号 | 能力 | 描述 | 备注 |
|---|---|---|---|
| 1 | 集成revision统一版本号 | ||
| 2 | 集成镜像仓库一键打成容器镜像 | ||
| 3 | 集成非root账号运行 | ||
| 4 |
# 使用说明
父类是统一的基础镜像版本使用,管理得当,是对整体工程的升级和配置会减少很多的,再进也方便很多,以下为能力的使用说明 :
# 集成revision统一版本号
工程包使用revision进行统一的版本管理,调整工程中的参数即可全局版本号管理:
<!-- 修改这里的版本号即可 -->
<revision>2.1.3-Alpha</revision>
在子类工程中的配置参考如下:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<parent>
<groupId>com.alinesno.cloud</groupId>
<artifactId>alinesno-cloud-starter-parent</artifactId>
<version>2.1.3-Alpha</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>alinesno-cloud-oauth-admin</groupId>
<artifactId>alinesno-cloud-oauth-admin-parent</artifactId>
<!-- 在这里父类统一版本revision 版本的管理,便于子类工程的统一 -->
<version>${revision}</version>
<packaging>pom</packaging>
<properties>
<!-- 修改这里的版本号即可 -->
<revision>2.1.3-Alpha</revision>
<alinesno.cloud.version>${revision}</alinesno.cloud.version>
</properties>
<modules>
<module>alinesno-cloud-oauth-admin-api</module>
<module>alinesno-cloud-oauth-admin-consumer</module>
<module>alinesno-cloud-oauth-admin-starter</module>
<module>alinesno-cloud-oauth-admin-gateway</module>
<module>alinesno-cloud-oauth-admin-boot</module>
</modules>
</project>
所有工程建议在这里进行统一的配置管理,避免影响和污染子类工程。
# 集成镜像仓库
这里集成的镜像版本基于jib-maven插件管理,这里做了进一步的优化配置,运行以下命令打包:
mvn clean jib:build
运行以上命令即可一键打包
默认配置如下:
<!-- google docker打包插件 mvn compile jib:build mvn compile jib:dockerBuild
mvn compile jib:buildTar -->
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${jib.maven.plugin.version}</version>
<configuration>
<from>
<image>${docker.base.images}</image>
</from>
<to>
<image>${docker.repository}/${docker.registry.name}/${project.artifactId}:${project.version}
</image>
<tags>
<tag>${project.version}</tag>
<tag>latest</tag>
</tags>
<auth>
<!--在docker-hub或者阿里云上的账号和密码-->
<username>${env.REGISTRY_USERNAME}</username>
<password>${env.REGISTRY_PASSWORD}</password>
</auth>
</to>
<container>
<appRoot>/home/${docker.user}</appRoot>
<workingDirectory>/home/${docker.user}</workingDirectory>
<user>${docker.user}</user>
<!--使用当前时间-->
<creationTime>USE_CURRENT_TIMESTAMP</creationTime>
<jvmFlags>
<jvmFlag>-Dfile.encoding=UTF-8</jvmFlag>
<!-- 调整成 -e JAVA_TOOL_OPTIONS="-Xms1G -Xmx1G -Dspring.profiles.active=prod"
传递参数,以适应多种环境 <jvmFlag>-Xms128m</jvmFlag> <jvmFlag>-Xmx512m</jvmFlag> <jvmFlag>-Dspring.profiles.active=hub</jvmFlag>
<jvmFlag>-XX:+UseParNewGC</jvmFlag> <jvmFlag>-XX:+UseConcMarkSweepGC</jvmFlag> -->
<jvmFlag>-XX:+DisableExplicitGC</jvmFlag>
<jvmFlag>-Xdebug</jvmFlag>
<jvmFlag>-Duser.timezone=GMT+08</jvmFlag>
<jvmFlag>-Djava.security.egd=file:/dev/./urandom</jvmFlag>
</jvmFlags>
<environment>
<TZ>Asia/Shanghai</TZ>
</environment>
<!--
<useCurrentTimestamp>true</useCurrentTimestamp>
-->
</container>
<allowInsecureRegistries>true</allowInsecureRegistries>
</configuration>
</plugin>
这里注意参考其它的配置
# 集成非root账号运行
默认镜像内部建立有alinesno账号和运行的相关目录,如其它目录需要创建,则可使用root账号运行,在子类工程中添加以下配置
<!-- 以下为root账号运行 -->
<docker.user>root</docker.user>
配置说明:
- 也可以使用其它的账号,建议开发使用调试,基于镜像进一步创建用户即
- 建议生成使用最小镜像,这里默认镜像是
slim或者alpha版本 - 镜像打包中,建议删除非生产使用或者多余
yaml配置文件,避免存在安全隐患
在alpha中添加账户参考配置如下,比如添加alinesno账户:
FROM openjdk:11.0.16-jdk-slim
ARG user=alinesno
ARG logger_dir=alinesno-running-logger
ARG logger_csp=logs/csp
ARG upload_files_dir=alinesno-upload-files
RUN useradd --create-home --no-log-init --shell /bin/bash ${user}
RUN adduser ${user} sudo
RUN chown -R ${user}:${user} /home/${user}
RUN mkdir /home/${user}/${logger_dir} && chown -R ${user}:${user} /home/${user}/${logger_dir}
RUN mkdir /home/${user}/${upload_files_dir} && chown -R ${user}:${user} /home/${user}/${upload_files_dir}
RUN mkdir -p /home/${user}/${logger_csp} && chown -R ${user}:${user} /home/${user}/${logger_csp}
# 其它
- 主要集成的版本号,版本升级在父类中调整即可。
- 对于需要企业自定义的父类,可以继承此父类,调整相关参数即可。