# 父类集成

# 概述

这里是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}

# 其它

  • 主要集成的版本号,版本升级在父类中调整即可。
  • 对于需要企业自定义的父类,可以继承此父类,调整相关参数即可。