diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/resources/banner.txt b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/resources/banner.txt deleted file mode 100644 index f0052df..0000000 --- a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/resources/banner.txt +++ /dev/null @@ -1,6 +0,0 @@ - ██████╗ ███████╗ ██████╗ ██╗████████╗ ██████╗ -██╔════╝ ██╔════╝██╔════╝ ██║╚══██╔══╝██╔════╝ -██║ ███╗█████╗ ██║ ███╗█████╗██║ ██║ ██║ -██║ ██║██╔══╝ ██║ ██║╚════╝██║ ██║ ██║ -╚██████╔╝███████╗╚██████╔╝ ██║ ██║ ╚██████╗ - ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ \ No newline at end of file diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/target/classes/bootstrap.yml b/itc-pcitc-mdm/itc-pcitc-mdm-service/target/classes/bootstrap.yml deleted file mode 100644 index d2afbfe..0000000 --- a/itc-pcitc-mdm/itc-pcitc-mdm-service/target/classes/bootstrap.yml +++ /dev/null @@ -1,56 +0,0 @@ -server: - port: 8099 - -spring: - application: - name: demo-service - main: - allow-bean-definition-overriding: true - profiles: - active: dev - cloud: - nacos: #nacos监控 - config: - server-addr: 10.0.252.1:8848 # nacos 配置中心地址 - namespace: ITC-MS - group: DNE - username: nacos - password: Yudean@2025 - file-extension: yml # 默认配置 ${spring.application.name}-${spring.profiles.active}.${file-extension} - refresh-enabled: true - extension-configs: - - data-id: global.yml - refresh: true - group: DNE - - - data-id: discovery.yml - refresh: true - group: DNE - - - data-id: datasource.yml - refresh: true - group: DNE - - - data-id: seata.yml - refresh: true - group: DNE - - - data-id: redis.yml - refresh: true - group: DNE - - - data-id: magic-api.yml - refresh: true - group: DNE - - - data-id: sa-token.yml - refresh: true - group: DNE - - - data-id: camunda.yml - refresh: true - group: DNE - - - data-id: sentinel.yml - refresh: true - group: DNE diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/pom.xml b/itc-pcitc-mdm/itc-pcitc-mdm-start/pom.xml index 48b7624..7fb1e13 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-start/pom.xml +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/pom.xml @@ -17,7 +17,7 @@ ${java.version} ${java.version} - pcitc/itc-pcitc-mdm + docker.ges.bjgastx.com/itc-pcitc-mdm @@ -30,6 +30,22 @@ + + org.springframework.boot + spring-boot-maven-plugin + 2.7.6 + + + + repackage + + + + false + + + + org.apache.maven.plugins maven-surefire-plugin @@ -45,6 +61,30 @@ ${java.version} + + com.spotify + docker-maven-plugin + 1.2.2 + + ${docker-registry} + 600000 + ${docker-image-name}:${maven.build.timestamp} + java + ${dockerDirectory} + ${docker-image-name}:${maven.build.timestamp} + false + + ${docker-jar-name} + + + + / + ${project.build.directory} + ${docker-jar-name} + + + + diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/Dockerfile b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/Dockerfile new file mode 100644 index 0000000..b7c3951 --- /dev/null +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/Dockerfile @@ -0,0 +1,39 @@ +#FROM --platform=linux/arm64 docker.ges.bjgastx.com/openjdk-arm64:8-jre +FROM docker.ges.bjgastx.com/jdk8u112:v1 + + +RUN mkdir -p /root/logs/java/ \ + && mkdir -p /scm/logs/ \ + && mkdir -p /opt/app/ \ + && mkdir -p /uploadFile/ \ + && mkdir -p /var/log/app \ + && mkdir -p /opt/app/logs \ + && mkdir -p /opt/agent/config + +ENV TZ "Asia/Shanghai" + +ADD ./skywalking-agent.jar /opt/agent/skywalking-agent.jar +ADD ./agent.config /opt/agent/config/agent.config + +RUN echo "set fileencodings=utf-8,gbk,gb2312,gb18030,cp936,latin1 \n set fenc=utf-8 \n set tenc=utf-8 \n set enc=utf-8 \n" |tee ~/.vimrc + + +ARG JAR_FILE +ARG PRO_FILE +ARG SOURCE_NAME + +ADD ./startApp.sh /opt/app/ +RUN chmod u+x /opt/app/*.sh +ADD ./${SOURCE_NAME} /opt/app/app.jar +RUN test -f /opt/app/app.jar || { echo "Error: JAR file not found at ${SOURCE_NAME}"; exit 1; } + +#应用名称 +ENV APP_NAME=itc-pcitc-mdm +#skywalking-oap-server地址 +ENV SKYWALKING_SERVER=10.10.2.102:11800 +ENV ENV_APP_FILE_PATH=/opt/app/app.jar +ENV ENV_APP_PRO_FILE=local + +EXPOSE 8096 5005 + +ENTRYPOINT ["/opt/app/startApp.sh"] \ No newline at end of file diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/docker-mdm.sh b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/docker-mdm.sh new file mode 100644 index 0000000..aef3758 --- /dev/null +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/docker-mdm.sh @@ -0,0 +1,126 @@ +#!/bin/bash + +# 定义变量 +CONTAINER_NAME="itc-pcitc-mdm" +IMAGE_NAME="10.10.2.102/itc-pcitc-mdm" +IMAGE_VERSION="2025-08-04-0940" +IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION" +PORT=8096 # 服务暴露端口 +CONTAINER_PORT=8096 # 服务暴露端口 +TZ="Asia/Shanghai" # 时区设置 +# 环境变量配置 +ENV_APP_PRO_FILE="local" +file="$CONTAINER_NAME-version.txt" + +# 检查文件是否存在(假设 $file 是目标文件变量,已在别处定义) +if [ ! -f "$file" ]; then + echo "文件 $file 不存在" + touch "$file" # 变量加引号,处理含空格的文件名 + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" +else + # 检查参数数量(建议移到脚本开头统一检查) + if [ $# -eq 2 ]; then + IMAGE_FULL="$IMAGE_NAME:$2" + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" + else + # 修正赋值语法:等号两侧无空格 + last_version=$(tail -n 1 "$file") + IMAGE_FULL="$last_version" + # 建议添加对 $IMAGE_FULL 的后续处理(如使用该变量) + fi +fi + +# 显示帮助信息 +show_help() { + echo "使用方法: $0 [操作类型]" + echo "操作类型:" + echo " deploy - 部署并启动服务容器" + echo " remove - 停止并删除容器及数据/日志目录" + echo " logs - 查看容器日志" + echo " help - 显示帮助信息" +} + + + +# 部署服务 +deploy_service() { + echo "部署镜像【$IMAGE_FULL】" + # 检查容器是否已存在,存在则停止并删除 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止并删除现有容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + docker rm $CONTAINER_NAME >/dev/null + fi + + # 启动服务容器 + echo "启动服务容器..." + docker run -d --privileged --restart always \ + --name $CONTAINER_NAME \ + -p $PORT:$CONTAINER_PORT \ + -e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \ + $IMAGE_FULL + + # 检查启动状态 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then + echo "服务启动成功!" + echo "容器名称: $CONTAINER_NAME" + echo "访问地址: http://localhost:$PORT" + echo "环境变量: ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE" + else + echo "服务启动失败,日志如下:" + docker logs $CONTAINER_NAME + exit 1 + fi +} + +# 删除服务 +remove_service() { + # 检查容器是否存在 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + + echo "删除容器: $CONTAINER_NAME" + docker rm $CONTAINER_NAME >/dev/null + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 查看日志 +show_logs() { + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..." + docker logs -f --tail 200 $CONTAINER_NAME + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 主逻辑 +if [ $# -lt 1 ]; then + show_help + exit 1 +fi + +case "$1" in + deploy) + deploy_service + ;; + remove) + remove_service + ;; + logs) + show_logs + ;; + help) + show_help + ;; + *) + echo "无效的操作类型: $1" + show_help + exit 1 + ;; +esac diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/target/classes/bootstrap-remote.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-dev.yml similarity index 67% rename from itc-pcitc-mdm/itc-pcitc-mdm-service/target/classes/bootstrap-remote.yml rename to itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-dev.yml index 10a6441..e3190eb 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-service/target/classes/bootstrap-remote.yml +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-dev.yml @@ -2,11 +2,11 @@ spring: cloud: nacos: #nacos监控 config: - server-addr: 47.94.165.164:8848 # nacos 配置中心地址 + server-addr: 127.0.0.1:8848 # nacos 配置中心地址 namespace: ITC-MS group: DNE username: nacos - password: Lng@123 + password: nacos extension-configs: - data-id: global-dev.yml refresh: true @@ -42,4 +42,12 @@ spring: - data-id: sentinel-dev.yml refresh: true - group: DNE \ No newline at end of file + group: DNE + +xjrsoft: + generate: + apiJavaPath: F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api + javaPath: F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service + webPath: F:\ges-scm\code\dev\geg-gas-web + appPath: D:\pm\yfxm-newgit\uniapp\xjrsoft-uni #前端app + diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-local.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-local.yml index f75a2a3..9f3ea8e 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-local.yml +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-local.yml @@ -2,7 +2,7 @@ spring: cloud: nacos: #nacos监控 config: - server-addr: 127.0.0.1:8848 # nacos 配置中心地址 + server-addr: 172.20.0.4:8848 # nacos 配置中心地址 namespace: ITC-MS group: DNE username: nacos @@ -42,8 +42,4 @@ spring: - data-id: sentinel-local.yml refresh: true - group: DNE - -datalog: - db: - url: jdbc:kingbase8://127.0.0.1:54321/itc?currentSchema=dne_log_sit \ No newline at end of file + group: DNE \ No newline at end of file diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-test.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-test.yml new file mode 100644 index 0000000..53409d8 --- /dev/null +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-test.yml @@ -0,0 +1,9 @@ +spring: + cloud: + nacos: #nacos监控 + config: + server-addr: 10.4.126.114:8848 # nacos 配置中心地址 + namespace: ITC-MS + group: DNE + username: nacos + password: Lng@123 \ No newline at end of file diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap.yml index d2afbfe..b7c7902 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap.yml +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap.yml @@ -1,9 +1,9 @@ server: - port: 8099 + port: 8096 spring: application: - name: demo-service + name: pcitc-mdm-service main: allow-bean-definition-overriding: true profiles: diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/Dockerfile b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/Dockerfile new file mode 100644 index 0000000..b7c3951 --- /dev/null +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/Dockerfile @@ -0,0 +1,39 @@ +#FROM --platform=linux/arm64 docker.ges.bjgastx.com/openjdk-arm64:8-jre +FROM docker.ges.bjgastx.com/jdk8u112:v1 + + +RUN mkdir -p /root/logs/java/ \ + && mkdir -p /scm/logs/ \ + && mkdir -p /opt/app/ \ + && mkdir -p /uploadFile/ \ + && mkdir -p /var/log/app \ + && mkdir -p /opt/app/logs \ + && mkdir -p /opt/agent/config + +ENV TZ "Asia/Shanghai" + +ADD ./skywalking-agent.jar /opt/agent/skywalking-agent.jar +ADD ./agent.config /opt/agent/config/agent.config + +RUN echo "set fileencodings=utf-8,gbk,gb2312,gb18030,cp936,latin1 \n set fenc=utf-8 \n set tenc=utf-8 \n set enc=utf-8 \n" |tee ~/.vimrc + + +ARG JAR_FILE +ARG PRO_FILE +ARG SOURCE_NAME + +ADD ./startApp.sh /opt/app/ +RUN chmod u+x /opt/app/*.sh +ADD ./${SOURCE_NAME} /opt/app/app.jar +RUN test -f /opt/app/app.jar || { echo "Error: JAR file not found at ${SOURCE_NAME}"; exit 1; } + +#应用名称 +ENV APP_NAME=itc-pcitc-mdm +#skywalking-oap-server地址 +ENV SKYWALKING_SERVER=10.10.2.102:11800 +ENV ENV_APP_FILE_PATH=/opt/app/app.jar +ENV ENV_APP_PRO_FILE=local + +EXPOSE 8096 5005 + +ENTRYPOINT ["/opt/app/startApp.sh"] \ No newline at end of file diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/agent.config b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/agent.config new file mode 100644 index 0000000..ed3fb29 --- /dev/null +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/agent.config @@ -0,0 +1,4 @@ +# 应用名称(在 SkyWalking UI 中显示的服务名) +agent.service_name=your-springboot-app +# SkyWalking OAP 服务地址(默认本地) +collector.backend_service=localhost:11800 \ No newline at end of file diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/resources/bootstrap-local.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap-dev.yml similarity index 100% rename from itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/resources/bootstrap-local.yml rename to itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap-dev.yml diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/target/classes/bootstrap-local.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap-local.yml similarity index 100% rename from itc-pcitc-mdm/itc-pcitc-mdm-service/target/classes/bootstrap-local.yml rename to itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap-local.yml diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/resources/bootstrap-remote.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap-remote.yml similarity index 100% rename from itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/resources/bootstrap-remote.yml rename to itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap-remote.yml diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap-test.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap-test.yml new file mode 100644 index 0000000..53409d8 --- /dev/null +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap-test.yml @@ -0,0 +1,9 @@ +spring: + cloud: + nacos: #nacos监控 + config: + server-addr: 10.4.126.114:8848 # nacos 配置中心地址 + namespace: ITC-MS + group: DNE + username: nacos + password: Lng@123 \ No newline at end of file diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/resources/bootstrap.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap.yml similarity index 96% rename from itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/resources/bootstrap.yml rename to itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap.yml index d2afbfe..b7c7902 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/resources/bootstrap.yml +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/bootstrap.yml @@ -1,9 +1,9 @@ server: - port: 8099 + port: 8096 spring: application: - name: demo-service + name: pcitc-mdm-service main: allow-bean-definition-overriding: true profiles: diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/docker-mdm.sh b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/docker-mdm.sh new file mode 100644 index 0000000..aef3758 --- /dev/null +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/docker-mdm.sh @@ -0,0 +1,126 @@ +#!/bin/bash + +# 定义变量 +CONTAINER_NAME="itc-pcitc-mdm" +IMAGE_NAME="10.10.2.102/itc-pcitc-mdm" +IMAGE_VERSION="2025-08-04-0940" +IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION" +PORT=8096 # 服务暴露端口 +CONTAINER_PORT=8096 # 服务暴露端口 +TZ="Asia/Shanghai" # 时区设置 +# 环境变量配置 +ENV_APP_PRO_FILE="local" +file="$CONTAINER_NAME-version.txt" + +# 检查文件是否存在(假设 $file 是目标文件变量,已在别处定义) +if [ ! -f "$file" ]; then + echo "文件 $file 不存在" + touch "$file" # 变量加引号,处理含空格的文件名 + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" +else + # 检查参数数量(建议移到脚本开头统一检查) + if [ $# -eq 2 ]; then + IMAGE_FULL="$IMAGE_NAME:$2" + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" + else + # 修正赋值语法:等号两侧无空格 + last_version=$(tail -n 1 "$file") + IMAGE_FULL="$last_version" + # 建议添加对 $IMAGE_FULL 的后续处理(如使用该变量) + fi +fi + +# 显示帮助信息 +show_help() { + echo "使用方法: $0 [操作类型]" + echo "操作类型:" + echo " deploy - 部署并启动服务容器" + echo " remove - 停止并删除容器及数据/日志目录" + echo " logs - 查看容器日志" + echo " help - 显示帮助信息" +} + + + +# 部署服务 +deploy_service() { + echo "部署镜像【$IMAGE_FULL】" + # 检查容器是否已存在,存在则停止并删除 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止并删除现有容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + docker rm $CONTAINER_NAME >/dev/null + fi + + # 启动服务容器 + echo "启动服务容器..." + docker run -d --privileged --restart always \ + --name $CONTAINER_NAME \ + -p $PORT:$CONTAINER_PORT \ + -e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \ + $IMAGE_FULL + + # 检查启动状态 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then + echo "服务启动成功!" + echo "容器名称: $CONTAINER_NAME" + echo "访问地址: http://localhost:$PORT" + echo "环境变量: ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE" + else + echo "服务启动失败,日志如下:" + docker logs $CONTAINER_NAME + exit 1 + fi +} + +# 删除服务 +remove_service() { + # 检查容器是否存在 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + + echo "删除容器: $CONTAINER_NAME" + docker rm $CONTAINER_NAME >/dev/null + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 查看日志 +show_logs() { + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..." + docker logs -f --tail 200 $CONTAINER_NAME + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 主逻辑 +if [ $# -lt 1 ]; then + show_help + exit 1 +fi + +case "$1" in + deploy) + deploy_service + ;; + remove) + remove_service + ;; + logs) + show_logs + ;; + help) + show_help + ;; + *) + echo "无效的操作类型: $1" + show_help + exit 1 + ;; +esac diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/startApp.sh b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/startApp.sh new file mode 100644 index 0000000..7dff4c5 --- /dev/null +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/startApp.sh @@ -0,0 +1,50 @@ +#!/bin/sh +#cp /etc/hosts /etc/hosts.temp + +# 初始化环境变量(设置默认值,避免空变量) +APP_NAME=${APP_NAME:-"default-springboot-app"} # 默认服务名 +SKYWALKING_SERVER=${SKYWALKING_SERVER:-"localhost:11800"} # 默认SkyWalking服务地址 +ENV_APP_PRO_FILE=${ENV_APP_PRO_FILE:-"test"} # 默认环境为test + +# 初始化Java启动参数(包含是否使用-server模式) +java_base="java -javaagent:/opt/agent/skywalking-agent.jar -Dskywalking.agent.service_name=$APP_NAME" +export java_base="$java_base -Dskywalking.collector.backend_service=$SKYWALKING_SERVER" + +java_start="$java_base -jar" + +# 根据环境变量区分开发/生产环境配置 +if [ "$ENV_APP_PRO_FILE" = "prod" ]; then + # 生产环境JVM参数 + export JAVA_OPTS="-Xms1024m -Xmx4096m -Xmn512m -Xss512k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m" + export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:G1HeapRegionSize=32m -XX:G1ReservePercent=20" + export JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=500 -XX:G1MixedGCCountTarget=10" + + export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xloggc:/var/log/app/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps" + export JAVA_OPTS="$JAVA_OPTS -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M" + + # 生产环境使用-server模式 + java_start="$java_base -jar -server" +else + # 开发环境JVM参数 + export JAVA_OPTS="-Xms512m -Xmx2048m -Xmn256m -Xss512k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m" + export JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseParNewGC" + export JAVA_OPTS="$JAVA_OPTS -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:CMSMaxAbortablePrecleanTime=5000" + export JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly" + export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xloggc:./logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps" + # 开发环境开启远程调试 + export JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" +fi + +# 公共配置(编码、时区等) +export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8" +export JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" +export JAVA_OPTS="$JAVA_OPTS -Duser.language=zh -Duser.country=CN -Duser.timezone=Asia/Shanghai" + +# SpringBoot 环境配置 +export JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=$ENV_APP_PRO_FILE" + +# 输出启动参数 +echo "启动参数:$java_start $JAVA_OPTS $ENV_APP_FILE_PATH" + +# 执行启动命令(用双引号包裹每个变量) +exec $java_start $JAVA_OPTS $ENV_APP_FILE_PATH \ No newline at end of file