From df9de4573098a9eeec730a303a0894301b9a1337 Mon Sep 17 00:00:00 2001 From: huwei <3313749341@qq.com> Date: Fri, 26 Jun 2026 11:43:58 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E6=94=B9=E3=80=91dubbo?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=9B=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91?= =?UTF-8?q?=E6=89=93=E5=8C=85=E5=8F=91=E5=B8=83gbs=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/GBS部署配置分析报告.docx | Bin 0 -> 15539 bytes docs/build-tools/Dockerfile | 43 +++ docs/build-tools/README.md | 306 ++++++++++++++++++ docs/build-tools/build.sh | 85 +++++ docs/build-tools/build_push.py | 166 ++++++++++ docs/build-tools/install_env.sh | 216 +++++++++++++ docs/{sql => db}/database-design.md | 0 docs/{ => db}/init-v2.sql | 0 docs/{sql => db}/init.sql | 0 docs/{ => db}/数据库规范.md | 0 docs/{ => db}/数据库设计文档-v2.md | 0 docs/{ => dev}/GBS前端开发规范.docx | Bin docs/{ => dev}/Gbs后端开发规范.docx | Bin docs/{ => dev}/JAVA规范.md | 0 docs/{ => dev}/settingsfjk.xml | 0 docs/~$S部署配置分析报告.docx | Bin 0 -> 162 bytes .../src/main/resources/application-dev.yml | 2 +- .../src/main/resources/application-local.yml | 2 +- .../src/main/resources/application-prod.yml | 2 +- .../src/main/resources/application.yml | 8 +- .../main/resources/nacos/config-actuator.yml | 36 +++ .../src/main/resources/nacos/config-cache.yml | 39 +++ .../main/resources/nacos/config-common.yml | 44 +++ .../src/main/resources/nacos/config-job.yml | 8 + .../src/main/resources/nacos/config-log.yml | 11 + .../src/main/resources/nacos/config-mq.yml | 21 ++ .../main/resources/nacos/config-mybatis.yml | 11 + .../src/main/resources/nacos/config-mysql.yml | 79 +++++ .../src/main/resources/nacos/config-port.yml | 3 + .../src/main/resources/nacos/config-redis.yml | 14 + .../src/main/resources/nacos/config-sdk.yml | 19 ++ .../main/resources/nacos/config-spring.yml | 89 +++++ .../main/resources/nacos/jjb-saas-demo.yml | 18 ++ .../src/main/resources/sdk-prod2.yml | 51 +++ 34 files changed, 1268 insertions(+), 5 deletions(-) create mode 100644 docs/GBS部署配置分析报告.docx create mode 100644 docs/build-tools/Dockerfile create mode 100644 docs/build-tools/README.md create mode 100644 docs/build-tools/build.sh create mode 100644 docs/build-tools/build_push.py create mode 100644 docs/build-tools/install_env.sh rename docs/{sql => db}/database-design.md (100%) rename docs/{ => db}/init-v2.sql (100%) rename docs/{sql => db}/init.sql (100%) rename docs/{ => db}/数据库规范.md (100%) rename docs/{ => db}/数据库设计文档-v2.md (100%) rename docs/{ => dev}/GBS前端开发规范.docx (100%) rename docs/{ => dev}/Gbs后端开发规范.docx (100%) rename docs/{ => dev}/JAVA规范.md (100%) rename docs/{ => dev}/settingsfjk.xml (100%) create mode 100644 docs/~$S部署配置分析报告.docx create mode 100644 safety-eval-start/src/main/resources/nacos/config-actuator.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-cache.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-common.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-job.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-log.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-mq.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-mybatis.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-mysql.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-port.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-redis.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-sdk.yml create mode 100644 safety-eval-start/src/main/resources/nacos/config-spring.yml create mode 100644 safety-eval-start/src/main/resources/nacos/jjb-saas-demo.yml create mode 100644 safety-eval-start/src/main/resources/sdk-prod2.yml diff --git a/docs/GBS部署配置分析报告.docx b/docs/GBS部署配置分析报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..fce4096cc7c7c4027cdfbc5b2679112a1ee245ed GIT binary patch literal 15539 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: -f Dockerfile . +# ============================================================ +# Build context structure: +# . +# ├── Dockerfile +# ├── jdk1.8.0_202/ (JDK directory, copied from /opt/jdk1.8.0_202) +# └── target/ +# └── *.jar (application JAR file) +# ============================================================ + +FROM centos:7 + +# Set timezone to Asia/Shanghai +RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime + +# Copy JDK +COPY jdk1.8.0_202/ /opt/jdk1.8.0_202/ + +# Set Java environment variables +ENV JAVA_HOME=/opt/jdk1.8.0_202 +ENV PATH=$PATH:$JAVA_HOME/bin +ENV LANG=C.UTF-8 + +# Create log directory +RUN mkdir -p /opt/logs + +# Copy the built JAR file +COPY target/*.jar /opt/app.jar + +# Default entrypoint +# Runtime parameters can be overridden via K8s deployment or docker run -e +ENTRYPOINT ["/opt/jdk1.8.0_202/bin/java", \ + "-Dnacos.namespace=jjb-dragon", \ + "-Dnacos.url=prod-nacos:8848", \ + "-Dspring.profiles.active=prod", \ + "-Dmysql.password=Mysql@zcloud33080", \ + "-Dmysql.host=192.168.20.100", \ + "-Dmysql.port=33080", \ + "-Dmysql.username=root", \ + "-jar", "/opt/app.jar"] diff --git a/docs/build-tools/README.md b/docs/build-tools/README.md new file mode 100644 index 0000000..eb2f535 --- /dev/null +++ b/docs/build-tools/README.md @@ -0,0 +1,306 @@ +## GBS Java 应用 Docker 镜像打包操作流程 + +### 目录结构 + +``` +build-tools/ +├── README.md ← 本文档 +├── Dockerfile ← Dockerfile 模板(CentOS 7 + JDK 1.8.0_202) +├── build.sh ← Shell 构建脚本(在 master 节点上执行) +├── build_push.py ← Python 构建脚本(在本地 Windows 上执行,自动上传+构建+推送) +└── install_env.sh ← 构建环境一键安装脚本(在 master 节点上执行) +``` + +### 环境信息 + +| 项目 | 信息 | +|------|------| +| Master 节点 | 192.168.20.100 (root / Zcloud@zcloud100) | +| OS | CentOS 7 (已 EOL,yum 源已切换阿里云 vault) | +| JDK | Oracle JDK 1.8.0_202,路径 `/opt/jdk1.8.0_202` | +| Maven | Apache Maven 3.8.8,路径 `/opt/maven`,阿里云镜像 | +| Docker | 26.1.4,cgroupdriver=systemd,storage=overlay2 | +| ACR 仓库 | `jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com` | +| ACR 命名空间 | `ali_img_ns` | +| K8s 命名空间 | `jjb-dragon` | + +### 镜像命名规则 + +完整镜像地址格式: + +``` +{ACR仓库}/{命名空间}/prod-aly-{环境前缀}-dragon-{应用名}:{环境前缀}-{日期}-{序号} +``` + +示例: + +``` +jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 +``` + +各部分说明: + +- `prod-aly` — 固定前缀(生产环境-阿里云) +- `ota` — 环境前缀,对应不同业务模块 +- `dragon` — 项目代号 +- `jjb-saas-safety-eval` — 应用名称 +- `ota-20260626-1` — 标签:环境前缀-年月日-序号(同一天多次构建递增序号) + +--- + +### 方式一:本地一键构建(推荐) + +在本地 Windows 机器上执行 `build_push.py`,自动完成 JAR 上传 → Docker 构建 → ACR 推送。 + +**前置条件:** 本地已安装 Python 和 paramiko(`pip install paramiko`) + +**执行命令:** + +```bash +python build_push.py <应用名> <环境前缀> [序号] +``` + +**示例:** + +```bash +python build_push.py E:\projects\safety-eval-service\safety-eval-start\target\safety-eval-start-1.0-SNAPSHOT.jar jjb-saas-safety-eval ota 1 +``` + +**输出:** + +``` +Image Address: + jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 +``` + +--- + +### 方式二:在 Master 节点上构建 + +SSH 登录 master 节点后,使用 `build.sh` 脚本构建。 + +**Step 1 — 上传 JAR 到 master 节点** + +在本地用 scp 或其他方式上传 JAR: + +```bash +scp safety-eval-start-1.0-SNAPSHOT.jar root@192.168.20.100:/tmp/ +``` + +**Step 2 — SSH 登录 master** + +```bash +ssh root@192.168.20.100 +# 密码: Zcloud@zcloud100 +``` + +**Step 3 — 执行构建脚本** + +```bash +source /etc/profile.d/java.sh +source /etc/profile.d/maven.sh +/opt/docker-templates/build.sh jjb-saas-safety-eval ota /tmp/safety-eval-start-1.0-SNAPSHOT.jar 1 +``` + +脚本会自动完成:准备构建上下文 → 复制 JDK → Docker build → Docker login ACR → Docker push。 + +--- + +### 方式三:手动分步操作 + +如果需要手动控制每一步: + +**Step 1 — 准备构建目录** + +```bash +BUILD_DIR=/tmp/manual-build +rm -rf $BUILD_DIR && mkdir -p $BUILD_DIR/target +``` + +**Step 2 — 复制 JDK 和 JAR** + +```bash +cp -r /opt/jdk1.8.0_202 $BUILD_DIR/ +cp /path/to/your-app.jar $BUILD_DIR/target/ +cp /opt/docker-templates/Dockerfile $BUILD_DIR/ +``` + +**Step 3 — Docker Build** + +```bash +docker build -t jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 $BUILD_DIR +``` + +**Step 4 — 登录 ACR** + +```bash +echo 'idurCT!rIq9EzISD' | docker login --username=10952138@qq.com --password-stdin jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com +``` + +**Step 5 — 推送镜像** + +```bash +docker push jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 +``` + +**Step 6 — 清理** + +```bash +rm -rf $BUILD_DIR +``` + +--- + +### 从源码构建(Maven 打包 + Docker 构建) + +如果拿到的是 Java 源码而不是编译好的 JAR: + +```bash +source /etc/profile.d/java.sh +source /etc/profile.d/maven.sh + +# Maven 编译打包 +cd /path/to/project +mvn clean package -DskipTests + +# 然后用编译好的 JAR 走上面的构建流程 +/opt/docker-templates/build.sh target/xxx.jar 1 +``` + +Maven 已配置阿里云镜像(`maven.aliyun.com/repository/public`),依赖下载速度约 200-400 KB/s。 + +--- + +### K8s 部署命令 + +**创建新 Deployment:** + +```bash +/usr/bin/kubectl create deployment jjb-saas-safety-eval \ + --image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 \ + -n jjb-dragon --replicas=1 +``` + +**更新已有 Deployment 的镜像:** + +```bash +/usr/bin/kubectl set image deployment/jjb-saas-safety-eval \ + jjb-saas-safety-eval=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 \ + -n jjb-dragon +``` + +**查看 Pod 状态:** + +```bash +/usr/bin/kubectl get pods -n jjb-dragon | grep safety-eval +``` + +**查看日志:** + +```bash +/usr/bin/kubectl logs -f deployment/jjb-saas-safety-eval -n jjb-dragon +``` + +**查看 Deployment 详情:** + +```bash +/usr/bin/kubectl describe deployment jjb-saas-safety-eval -n jjb-dragon +``` + +--- + +### 常用查询命令 + +**查看本地镜像:** + +```bash +docker images | grep jjb-saas-safety-eval +``` + +**查看镜像详情:** + +```bash +docker inspect jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 +``` + +**查看镜像构建历史:** + +```bash +docker history jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 +``` + +**本地测试运行:** + +```bash +docker run --rm -it --name safety-eval-test \ + -p 8080:8080 \ + jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 +``` + +**列出 ACR 上所有已有镜像:** + +```bash +docker images --format '{{.Repository}}:{{.Tag}}' | grep 'ali_img_ns' +``` + +--- + +### 构建环境安装 + +首次使用新机器时,运行 `install_env.sh` 一键安装全部构建依赖: + +```bash +ssh root@192.168.20.100 +bash install_env.sh +``` + +该脚本会安装并配置:JDK 1.8.0_202、Maven 3.8.8(阿里云镜像)、Dockerfile 模板、yum vault 源、ACR 登录。 + +--- + +### Dockerfile 结构说明 + +镜像内部结构(从已有运行镜像逆向分析得出): + +``` +/ +├── opt/ +│ ├── jdk1.8.0_202/ ← Oracle JDK 1.8.0_202 +│ ├── app.jar ← 应用 JAR 包 +│ └── logs/ ← 日志目录 +``` + +容器启动命令(ENTRYPOINT): + +``` +/opt/jdk1.8.0_202/bin/java + -Dnacos.namespace=jjb-dragon + -Dnacos.url=prod-nacos:8848 + -Dspring.profiles.active=prod + -Dmysql.password=*** + -Dmysql.host=192.168.20.100 + -Dmysql.port=33080 + -Dmysql.username=root + -jar /opt/app.jar +``` + +运行时可通过 K8s deployment 的 `args` 或 `env` 字段覆盖以上参数。 + +--- + +### 故障排查 + +**问题:`yum install` 报错 404** +CentOS 7 已 EOL,确认 `/etc/yum.repos.d/CentOS-Base.repo` 使用 `centos-vault` 源(install_env.sh 会自动处理)。 + +**问题:Maven 下载依赖慢** +检查 `/root/.m2/settings.xml` 是否配置了阿里云镜像,mirrorOf 应为 `central`。 + +**问题:`docker push` 报 unauthorized** +重新登录 ACR:`echo 'idurCT!rIq9EzISD' | docker login --username=10952138@qq.com --password-stdin jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com` + +**问题:K8s 拉取镜像失败 (ImagePullBackOff)** +确认 `jjb-dragon` namespace 下有 `image-pull-secret` 或 `image-pull-secret1`: +```bash +/usr/bin/kubectl get secret -n jjb-dragon | grep image-pull +``` diff --git a/docs/build-tools/build.sh b/docs/build-tools/build.sh new file mode 100644 index 0000000..16a508a --- /dev/null +++ b/docs/build-tools/build.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# ============================================================ +# GBS Application Build & Push Script (Shell version) +# Run on master node: 192.168.20.100 +# +# Usage: +# ./build.sh [version-suffix] +# +# Example: +# ./build.sh jjb-saas-safety-eval ota /tmp/safety-eval.jar 1 +# +# Result image: +# jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 +# ============================================================ + +set -e + +# ---- Parameters ---- +APP_NAME=${1:?"Usage: $0 [version-suffix]"} +ENV_PREFIX=${2:?"Usage: $0 [version-suffix]"} +JAR_FILE=${3:?"Usage: $0 [version-suffix]"} +VERSION_SUFFIX=${4:-1} + +# ---- Constants ---- +ACR_REGISTRY="jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com" +ACR_NAMESPACE="ali_img_ns" +ACR_USER="10952138@qq.com" +ACR_PASS='idurCT!rIq9EzISD' +DATE_TAG=$(date +%Y%m%d) +IMAGE_TAG="${ENV_PREFIX}-${DATE_TAG}-${VERSION_SUFFIX}" +FULL_IMAGE="${ACR_REGISTRY}/${ACR_NAMESPACE}/prod-aly-${ENV_PREFIX}-dragon-${APP_NAME}:${IMAGE_TAG}" +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" + +# Source environment +source /etc/profile.d/java.sh 2>/dev/null || true +source /etc/profile.d/maven.sh 2>/dev/null || true + +echo "==========================================" +echo " GBS Docker Build & Push" +echo "==========================================" +echo "App: ${APP_NAME}" +echo "Tag: ${IMAGE_TAG}" +echo "JAR: ${JAR_FILE}" +echo "Image: ${FULL_IMAGE}" +echo "==========================================" + +# ---- Step 1: Verify JAR ---- +if [ ! -f "${JAR_FILE}" ]; then + echo "ERROR: JAR file not found: ${JAR_FILE}" + exit 1 +fi +echo "[1/4] JAR verified: $(ls -lh ${JAR_FILE} | awk '{print $5}')" + +# ---- Step 2: Prepare build context ---- +BUILD_DIR="/tmp/docker-build-${APP_NAME}-$$" +echo "[2/4] Preparing build context at ${BUILD_DIR}..." +mkdir -p ${BUILD_DIR}/target +cp -r /opt/jdk1.8.0_202 ${BUILD_DIR}/ +cp ${JAR_FILE} ${BUILD_DIR}/target/ +cp ${SCRIPT_DIR}/Dockerfile ${BUILD_DIR}/ +echo " Build context size: $(du -sh ${BUILD_DIR} | awk '{print $1}')" + +# ---- Step 3: Docker build ---- +echo "[3/4] Building Docker image..." +docker build -t "${FULL_IMAGE}" "${BUILD_DIR}" +echo " Image size: $(docker images --format '{{.Size}}' ${FULL_IMAGE})" + +# ---- Step 4: Push to ACR ---- +echo "[4/4] Pushing to ACR..." +echo "${ACR_PASS}" | docker login --username="${ACR_USER}" --password-stdin "${ACR_REGISTRY}" 2>/dev/null +docker push "${FULL_IMAGE}" + +# ---- Cleanup ---- +rm -rf "${BUILD_DIR}" + +echo "" +echo "==========================================" +echo " BUILD COMPLETE" +echo "==========================================" +echo "Image: ${FULL_IMAGE}" +echo "" +echo "Deploy to K8s:" +echo " /usr/bin/kubectl create deployment ${APP_NAME} --image=${FULL_IMAGE} -n jjb-dragon --replicas=1" +echo " /usr/bin/kubectl set image deployment/${APP_NAME} ${APP_NAME}=${FULL_IMAGE} -n jjb-dragon" +echo "==========================================" diff --git a/docs/build-tools/build_push.py b/docs/build-tools/build_push.py new file mode 100644 index 0000000..348c0a0 --- /dev/null +++ b/docs/build-tools/build_push.py @@ -0,0 +1,166 @@ +""" +GBS Application Build & Push Script (Python version) +Run from local Windows machine - handles SFTP upload + remote build + push. + +Usage: + python build_push.py [version-suffix] + +Example: + python build_push.py E:\\projects\\xxx\\target\\app.jar jjb-saas-safety-eval ota 1 + +Result image: + jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-safety-eval:ota-20260626-1 +""" + +import paramiko +import sys +import os +import time +from datetime import datetime + +# ---- Configuration ---- +MASTER = "192.168.20.100" +SSH_USER = "root" +SSH_PASSWD = "Zcloud@zcloud100" + +ACR_REGISTRY = "jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com" +ACR_NAMESPACE = "ali_img_ns" +ACR_USER = "10952138@qq.com" +ACR_PASS = "idurCT!rIq9EzISD" + +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +DOCKERFILE_PATH = os.path.join(SCRIPT_DIR, "Dockerfile") + + +def ssh_exec(client, cmd, timeout=600): + """Execute SSH command and print results.""" + print(f" > {cmd[:120]}{'...' if len(cmd) > 120 else ''}") + stdin, stdout, stderr = client.exec_command(cmd, timeout=timeout) + out = stdout.read().decode('utf-8', errors='replace') + err = stderr.read().decode('utf-8', errors='replace') + exit_code = stdout.channel.recv_exit_status() + if out.strip(): + for line in out.strip().split('\n')[-10:]: # last 10 lines + print(f" {line}") + if err.strip(): + important = [l for l in err.strip().split('\n') + if not any(x in l for x in ['Downloading', 'Downloaded', 'Extracting', 'Progress'])] + if important: + print(f" [stderr] {'; '.join(important[:5])}") + return out.strip(), err.strip(), exit_code + + +def main(): + if len(sys.argv) < 4: + print(__doc__) + sys.exit(1) + + jar_local = sys.argv[1] + app_name = sys.argv[2] + env_prefix = sys.argv[3] + version_suffix = sys.argv[4] if len(sys.argv) > 4 else "1" + + date_tag = datetime.now().strftime("%Y%m%d") + image_tag = f"{env_prefix}-{date_tag}-{version_suffix}" + full_image = f"{ACR_REGISTRY}/{ACR_NAMESPACE}/prod-aly-{env_prefix}-dragon-{app_name}:{image_tag}" + + if not os.path.exists(jar_local): + print(f"ERROR: JAR file not found: {jar_local}") + sys.exit(1) + + jar_size_mb = os.path.getsize(jar_local) / 1024 / 1024 + build_dir = f"/tmp/docker-build-{app_name}" + jar_name = os.path.basename(jar_local) + + print("=" * 60) + print(f" GBS Docker Build & Push (Remote)") + print("=" * 60) + print(f" JAR: {jar_local} ({jar_size_mb:.1f} MB)") + print(f" App: {app_name}") + print(f" Tag: {image_tag}") + print(f" Image: {full_image}") + print(f" Target: {MASTER}") + print("=" * 60) + + # ---- Connect ---- + client = paramiko.SSHClient() + client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + client.connect(MASTER, username=SSH_USER, password=SSH_PASSWD, timeout=30) + print("\n[1/5] SSH connected") + + # ---- Prepare remote dir ---- + ssh_exec(client, f"rm -rf {build_dir} && mkdir -p {build_dir}/target") + + # ---- Upload JAR ---- + print(f"\n[2/5] Uploading JAR ({jar_size_mb:.1f} MB)...") + sftp = client.open_sftp() + remote_jar = f"{build_dir}/target/{jar_name}" + start = time.time() + last_pct = -1 + + def progress(transferred, total): + nonlocal last_pct + pct = int(transferred * 100 / total) + if pct >= last_pct + 10: + last_pct = pct + mb = transferred / 1024 / 1024 + elapsed = time.time() - start + speed = mb / elapsed if elapsed > 0 else 0 + print(f" {pct}% ({mb:.1f} MB) - {speed:.1f} MB/s") + + sftp.put(jar_local, remote_jar, callback=progress) + elapsed = time.time() - start + print(f" Done in {elapsed:.1f}s ({jar_size_mb/elapsed:.1f} MB/s)") + sftp.close() + + # ---- Upload Dockerfile ---- + ssh_exec(client, f"cat > {build_dir}/Dockerfile", timeout=10) + with open(DOCKERFILE_PATH, 'r', encoding='utf-8') as f: + dockerfile_content = f.read() + stdin, stdout, stderr = client.exec_command(f"cat > {build_dir}/Dockerfile") + stdin.write(dockerfile_content) + stdin.channel.shutdown_write() + stdout.read() + + # ---- Copy JDK into context ---- + print("\n[3/5] Preparing build context...") + ssh_exec(client, f"cp -r /opt/jdk1.8.0_202 {build_dir}/", timeout=120) + ssh_exec(client, f"du -sh {build_dir}/") + + # ---- Docker build ---- + print("\n[4/5] Building Docker image...") + out, err, code = ssh_exec(client, f"docker build -t '{full_image}' {build_dir}", timeout=300) + if code != 0: + print("ERROR: Docker build failed!") + client.close() + sys.exit(1) + + # ---- Push to ACR ---- + print("\n[5/5] Pushing to ACR...") + ssh_exec(client, f"echo '{ACR_PASS}' | docker login --username={ACR_USER} --password-stdin {ACR_REGISTRY}") + out, err, code = ssh_exec(client, f"docker push '{full_image}'", timeout=600) + if code != 0: + print("ERROR: Docker push failed!") + client.close() + sys.exit(1) + + # ---- Verify & Cleanup ---- + ssh_exec(client, f"docker images | grep '{app_name}'") + ssh_exec(client, f"rm -rf {build_dir}") + client.close() + + # ---- Summary ---- + print("\n" + "=" * 60) + print(" BUILD COMPLETE") + print("=" * 60) + print(f"\n Image Address:\n {full_image}\n") + print(f" K8s Deploy:\n" + f" /usr/bin/kubectl create deployment {app_name} \\\n" + f" --image={full_image} -n jjb-dragon --replicas=1\n") + print(f" /usr/bin/kubectl set image deployment/{app_name} \\\n" + f" {app_name}={full_image} -n jjb-dragon\n") + print("=" * 60) + + +if __name__ == "__main__": + main() diff --git a/docs/build-tools/install_env.sh b/docs/build-tools/install_env.sh new file mode 100644 index 0000000..bbd1dc3 --- /dev/null +++ b/docs/build-tools/install_env.sh @@ -0,0 +1,216 @@ +#!/bin/bash +# ============================================================ +# GBS Master Node Build Environment Installation Script +# Run on: 192.168.20.100 (CentOS 7) +# +# Installs: +# - Oracle JDK 1.8.0_202 (extracted from existing Docker image) +# - Apache Maven 3.8.8 (with Alibaba Cloud mirror) +# - Dockerfile template +# - yum vault mirrors (CentOS 7 EOL fix) +# - ACR login +# +# Usage: +# bash install_env.sh +# ============================================================ + +set -e + +echo "==========================================" +echo " GBS Build Environment Setup" +echo " Host: $(hostname) ($(hostname -I 2>/dev/null || echo 'unknown'))" +echo "==========================================" + +# ---- Step 1: Extract JDK from existing Docker image ---- +echo "" +echo "[1/6] Installing JDK 1.8.0_202..." + +if [ -d "/opt/jdk1.8.0_202" ] && [ -x "/opt/jdk1.8.0_202/bin/java" ]; then + echo " JDK already installed, skipping." +else + # Find an image with JDK + IMAGE=$(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'ali_img_ns' | head -1) + if [ -z "$IMAGE" ]; then + echo "ERROR: No suitable Docker image found with JDK!" + exit 1 + fi + echo " Extracting JDK from: $IMAGE" + docker rm -f jdk-extract-tmp 2>/dev/null || true + docker create --name jdk-extract-tmp "$IMAGE" /bin/true > /dev/null + docker cp jdk-extract-tmp:/opt/jdk1.8.0_202 /opt/jdk1.8.0_202 + docker rm jdk-extract-tmp > /dev/null + echo " JDK extracted to /opt/jdk1.8.0_202" +fi + +# Configure JAVA_HOME +cat > /etc/profile.d/java.sh << 'EOF' +export JAVA_HOME=/opt/jdk1.8.0_202 +export PATH=$JAVA_HOME/bin:$PATH +EOF +chmod +x /etc/profile.d/java.sh +source /etc/profile.d/java.sh +echo " $(java -version 2>&1 | head -1)" + +# ---- Step 2: Install Maven ---- +echo "" +echo "[2/6] Installing Maven 3.8.8..." + +if [ -x "/opt/maven/bin/mvn" ]; then + echo " Maven already installed, skipping." +else + MAVEN_VERSION="3.8.8" + MAVEN_URLS=( + "https://mirrors.aliyun.com/apache/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" + "https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" + ) + DOWNLOADED=0 + for url in "${MAVEN_URLS[@]}"; do + echo " Trying: $url" + if curl -fsSL -o /tmp/maven.tar.gz "$url" --connect-timeout 15 --max-time 300; then + DOWNLOADED=1 + break + fi + done + if [ $DOWNLOADED -eq 0 ]; then + echo "ERROR: Could not download Maven!" + exit 1 + fi + mkdir -p /opt/maven + tar -xzf /tmp/maven.tar.gz -C /opt/maven --strip-components=1 + rm -f /tmp/maven.tar.gz +fi + +# Configure Maven environment +cat > /etc/profile.d/maven.sh << 'EOF' +export MAVEN_HOME=/opt/maven +export PATH=$MAVEN_HOME/bin:$PATH +EOF +chmod +x /etc/profile.d/maven.sh +source /etc/profile.d/maven.sh + +# Configure Alibaba Maven mirror +mkdir -p /root/.m2 +cat > /root/.m2/settings.xml << 'XMLEOF' + + + /root/.m2/repository + + + aliyunmaven + Alibaba Cloud Maven Mirror + https://maven.aliyun.com/repository/public + central + + + + + alibaba-repos + + + aliyun-public + https://maven.aliyun.com/repository/public + true + true + + + aliyun-spring + https://maven.aliyun.com/repository/spring + true + true + + + + + aliyun-plugin + https://maven.aliyun.com/repository/public + true + true + + + + + + alibaba-repos + + +XMLEOF +cp /root/.m2/settings.xml /opt/maven/conf/settings.xml +echo " Maven $(mvn -version 2>&1 | head -1)" + +# ---- Step 3: Fix yum repos (CentOS 7 EOL) ---- +echo "" +echo "[3/6] Configuring yum vault mirrors..." + +cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak.$(date +%Y%m%d) 2>/dev/null || true +cat > /etc/yum.repos.d/CentOS-Base.repo << 'YUMEOF' +[base] +name=CentOS-7 - Base - vault.aliyun.com +baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 +enabled=1 + +[updates] +name=CentOS-7 - Updates - vault.aliyun.com +baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/x86_64/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 +enabled=1 + +[extras] +name=CentOS-7 - Extras - vault.aliyun.com +baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/x86_64/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 +enabled=1 +YUMEOF +yum clean all > /dev/null 2>&1 +yum makecache fast > /dev/null 2>&1 +echo " yum repos configured (aliyun centos-vault)" + +# ---- Step 4: Verify Docker ---- +echo "" +echo "[4/6] Verifying Docker..." +echo " Docker $(docker --version)" + +# ---- Step 5: Login to ACR ---- +echo "" +echo "[5/6] Logging in to ACR..." +echo 'idurCT!rIq9EzISD' | docker login --username=10952138@qq.com --password-stdin jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com 2>&1 | grep -v WARNING + +# ---- Step 6: Install Dockerfile template ---- +echo "" +echo "[6/6] Installing Dockerfile template..." +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +mkdir -p /opt/docker-templates +if [ -f "${SCRIPT_DIR}/Dockerfile" ]; then + cp "${SCRIPT_DIR}/Dockerfile" /opt/docker-templates/ + echo " Dockerfile copied to /opt/docker-templates/" +fi +if [ -f "${SCRIPT_DIR}/build.sh" ]; then + cp "${SCRIPT_DIR}/build.sh" /opt/docker-templates/ + chmod +x /opt/docker-templates/build.sh + echo " build.sh copied to /opt/docker-templates/" +fi + +# ---- Summary ---- +echo "" +echo "==========================================" +echo " INSTALLATION COMPLETE" +echo "==========================================" +echo "" +echo " Java: $(/opt/jdk1.8.0_202/bin/java -version 2>&1 | head -1)" +echo " Maven: $(/opt/maven/bin/mvn -version 2>&1 | head -1)" +echo " Docker: $(docker --version)" +echo "" +echo " JAVA_HOME=/opt/jdk1.8.0_202" +echo " MAVEN_HOME=/opt/maven" +echo " Dockerfile: /opt/docker-templates/Dockerfile" +echo " Build script: /opt/docker-templates/build.sh" +echo "" +echo " NOTE: Run 'source /etc/profile.d/java.sh' and" +echo " 'source /etc/profile.d/maven.sh' or re-login" +echo " to use java/mvn commands." +echo "==========================================" diff --git a/docs/sql/database-design.md b/docs/db/database-design.md similarity index 100% rename from docs/sql/database-design.md rename to docs/db/database-design.md diff --git a/docs/init-v2.sql b/docs/db/init-v2.sql similarity index 100% rename from docs/init-v2.sql rename to docs/db/init-v2.sql diff --git a/docs/sql/init.sql b/docs/db/init.sql similarity index 100% rename from docs/sql/init.sql rename to docs/db/init.sql diff --git a/docs/数据库规范.md b/docs/db/数据库规范.md similarity index 100% rename from docs/数据库规范.md rename to docs/db/数据库规范.md diff --git a/docs/数据库设计文档-v2.md b/docs/db/数据库设计文档-v2.md similarity index 100% rename from docs/数据库设计文档-v2.md rename to docs/db/数据库设计文档-v2.md diff --git a/docs/GBS前端开发规范.docx b/docs/dev/GBS前端开发规范.docx similarity index 100% rename from docs/GBS前端开发规范.docx rename to docs/dev/GBS前端开发规范.docx diff --git a/docs/Gbs后端开发规范.docx b/docs/dev/Gbs后端开发规范.docx similarity index 100% rename from docs/Gbs后端开发规范.docx rename to docs/dev/Gbs后端开发规范.docx diff --git a/docs/JAVA规范.md b/docs/dev/JAVA规范.md similarity index 100% rename from docs/JAVA规范.md rename to docs/dev/JAVA规范.md diff --git a/docs/settingsfjk.xml b/docs/dev/settingsfjk.xml similarity index 100% rename from docs/settingsfjk.xml rename to docs/dev/settingsfjk.xml diff --git a/docs/~$S部署配置分析报告.docx b/docs/~$S部署配置分析报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..fcd42e3fa9819ae3c2e99e74ae57ff52b9d59275 GIT binary patch literal 162 xcmd;eOv%m6%PcM_N-W7QVjvRmGB`4%Fyu01GUNeqF+&MM5kn%7%m>oc1^`8%3f%wz literal 0 HcmV?d00001 diff --git a/safety-eval-start/src/main/resources/application-dev.yml b/safety-eval-start/src/main/resources/application-dev.yml index 9a0c59c..da2a9d1 100644 --- a/safety-eval-start/src/main/resources/application-dev.yml +++ b/safety-eval-start/src/main/resources/application-dev.yml @@ -67,7 +67,7 @@ dubbo: registry: address: nacos://192.168.20.100:30290 parameters: - namespace: jjb-dragon + namespace: jjb-dragon-facade protocol: port: 20895 diff --git a/safety-eval-start/src/main/resources/application-local.yml b/safety-eval-start/src/main/resources/application-local.yml index 1280ba2..a066600 100644 --- a/safety-eval-start/src/main/resources/application-local.yml +++ b/safety-eval-start/src/main/resources/application-local.yml @@ -68,7 +68,7 @@ dubbo: registry: address: nacos://192.168.20.100:30290 parameters: - namespace: jjb-dragon + namespace: jjb-dragon-facade protocol: port: 20895 diff --git a/safety-eval-start/src/main/resources/application-prod.yml b/safety-eval-start/src/main/resources/application-prod.yml index 43f5142..d341a47 100644 --- a/safety-eval-start/src/main/resources/application-prod.yml +++ b/safety-eval-start/src/main/resources/application-prod.yml @@ -72,7 +72,7 @@ dubbo: registry: address: nacos://prod-nacos:8848 parameters: - namespace: jjb-dragon + namespace: jjb-dragon-facade protocol: port: 20895 diff --git a/safety-eval-start/src/main/resources/application.yml b/safety-eval-start/src/main/resources/application.yml index ed08df1..6dd5a57 100644 --- a/safety-eval-start/src/main/resources/application.yml +++ b/safety-eval-start/src/main/resources/application.yml @@ -16,11 +16,15 @@ server: spring: application: name: safety-eval-service - profiles: - active: local mvc: pathmatch: matching-strategy: ant_path_matcher + profiles: + active: local + config: + import: + - classpath:sdk-prod2.yml + # ---------- MyBatis Plus ---------- mybatis-plus: diff --git a/safety-eval-start/src/main/resources/nacos/config-actuator.yml b/safety-eval-start/src/main/resources/nacos/config-actuator.yml new file mode 100644 index 0000000..a538ab2 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-actuator.yml @@ -0,0 +1,36 @@ +management: + endpoints: + web: + base-path: /${application.gateway}${application.version}/actuator + enabled-by-default: true + endpoint: + health: + enabled: true + info: + enabled: false + auditevents: + enabled: false + metrics: + enabled: false + loggers: + enabled: false + logfile: + enabled: false + httptrace: + enabled: false + env: + enabled: false + flyway: + enabled: false + liquidbase: + enabled: false + shutdown: + enabled: false + mappings: + enabled: false + scheduledtasks: + enabled: false + threaddump: + enabled: false + heapdump: + enabled: false \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/nacos/config-cache.yml b/safety-eval-start/src/main/resources/nacos/config-cache.yml new file mode 100644 index 0000000..7d6ab7d --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-cache.yml @@ -0,0 +1,39 @@ +spring: + cache: + redis: + time-to-live: 1800s + + +# 二级缓存配置 +# 注:caffeine 不适用于数据量大,并且缓存命中率极低的业务场景,如用户维度的缓存。请慎重选择。 +l2cache: + config: + # 是否存储空值,默认true,防止缓存穿透 + allowNullValues: true + # 组合缓存配置 + composite: + # 是否全部启用一级缓存,默认false + l1AllOpen: false + # 一级缓存 + caffeine: + # 是否自动刷新过期缓存 true 是 false 否 + autoRefreshExpireCache: false + # 缓存刷新调度线程池的大小 + refreshPoolSize: 2 + # 缓存刷新的频率(秒) + refreshPeriod: 10 + # 写入后过期时间(秒) + expireAfterWrite: 180 + # 访问后过期时间(秒) + expireAfterAccess: 180 + # 初始化大小 + initialCapacity: 1 + # 最大缓存对象个数,超过此数量时之前放入的缓存将失效 + maximumSize: 3 + + # 二级缓存 + redis: + # 全局过期时间,单位毫秒,默认不过期 + defaultExpiration: 1800000 + # 缓存更新时通知其他节点的topic名称 默认 cache:redis:caffeine:topic + topic: cache:redis:caffeine:topic \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/nacos/config-common.yml b/safety-eval-start/src/main/resources/nacos/config-common.yml new file mode 100644 index 0000000..810ccf5 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-common.yml @@ -0,0 +1,44 @@ +common: + mysql: + host: 192.168.2.166 + port: 3306 + username: root + password: root + redis: + host: 10.43.253.4 + password: jjb123456 + port: 6379 + mq: + host: 10.43.163.23:9876 + xxl-job: + address: http://10.43.98.135:8080/xxl-job-admin/ + username: admin + password: jjb123456 + gateway: + network: + http: + #网关的外网访问地址 必须配置为HTTPS协议 + external: https://testdragon.cqjjb.cn + #网关的内网访问地址 固定配置为http://jjb-saas-gateway + intranet: http://10.43.250.65 + wx: + #webSocket外网地址 + external: wx://testdragon.cqjjb.cn + swagger: + #是否打开swagger 测试及UAT配置为true,生产环境配置为false + enabled: true + base: + # base应用访问外网访问地址 + host-url: http://10.43.12.158 + desk: + # desk工程的外网地址 + host-url: http://10.43.12.158 + login: + # login工程的外网访问地址 + host-url: http://10.43.12.158 + + #所有的前端域名配置 避免iframe跨域 + x-frame-options: ${common.desk.host-url}/ ${common.login.host-url}/ ${common.base.host-url}/ ${common.gateway.network.http.external}/ http://10.43.250.65/ + +k8s: + namespace: test-dragon \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/nacos/config-job.yml b/safety-eval-start/src/main/resources/nacos/config-job.yml new file mode 100644 index 0000000..1428887 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-job.yml @@ -0,0 +1,8 @@ +# JOB 配置 +xxl-job: + admin: + address: ${common.xxl-job.address} + username: ${common.xxl-job.username} + password: ${common.xxl-job.password} + executor: + app-name: ${spring.application.name} \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/nacos/config-log.yml b/safety-eval-start/src/main/resources/nacos/config-log.yml new file mode 100644 index 0000000..9d8ab6c --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-log.yml @@ -0,0 +1,11 @@ +common: + log: + jjb-saas-system: + - com.jjb:info + jjb-saas-auth1: + - com.jjb:info + jjb-saas-user: + - com.jjb:info +gray: + log: + host: 192.168.1.1 diff --git a/safety-eval-start/src/main/resources/nacos/config-mq.yml b/safety-eval-start/src/main/resources/nacos/config-mq.yml new file mode 100644 index 0000000..9e1b0b3 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-mq.yml @@ -0,0 +1,21 @@ +mq: + topic: springcloudStream-jjb-dragon-test + server: ${common.mq.host} +spring: + cloud: + stream: + bindings: + input: + destination: springcloudStream-jjb-dragon-test + group: ${spring.application.name}-${spring.profiles.active} + output: + destination: springcloudStream-jjb-dragon-test + group: ${spring.application.name}-${spring.profiles.active} + rocketmq: + binder: + name-server: ${common.mq.host} + group: ${spring.application.name}-${spring.profiles.active} + bindings: + input: + consumer: + tags: a \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/nacos/config-mybatis.yml b/safety-eval-start/src/main/resources/nacos/config-mybatis.yml new file mode 100644 index 0000000..f756cb6 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-mybatis.yml @@ -0,0 +1,11 @@ +mybatis-plus: + mapper-locations: classpath*:mapper/*.xml,classpath*:mapper/**/*Mapper.xml + type-handlers-package: com.jjb.saas.framework.datascope.handler + global-config: + banner: false + db-config: + id-type: assign_id + logic-delete-value: 1 + logic-not-delete-value: 0 + configuration: + log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/nacos/config-mysql.yml b/safety-eval-start/src/main/resources/nacos/config-mysql.yml new file mode 100644 index 0000000..4365a53 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-mysql.yml @@ -0,0 +1,79 @@ +mysql: + db: ${spring.application.name} +spring: + shardingsphere: + druid: + username: admin + password: jjb123456 + allows: + denys: + props: + sql: + show: true + enabled: true + masterslave: + name: ms # 名字,任意,需要保证唯一 + master-data-source-name: master # 主库数据源 + slave-data-source-names: slave-1 # 从库数据源 + datasource: + names: master,slave-1 + master: + #url: jdbc:mysql://10.43.123.226:3306/${spring.application.name}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://${common.mysql.host}:${common.mysql.port}/${mysql.db}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + username: ${common.mysql.username} + password: ${common.mysql.password} + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + initial-size: 6 + min-idle: 4 + maxActive: 40 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + #Oracle需要打开注释 + #validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + # 打开PSCache,并且指定每个连接上PSCache的大小 + poolPreparedStatements: true + maxPoolPreparedStatementPerConnectionSize: 20 + # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 + filters: slf4j + # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 + connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 + wall: + multi-statement-allow: true + slave-1: + # url: jdbc:mysql://10.43.123.226:3306/${spring.application.name}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://${common.mysql.host}:${common.mysql.port}/${mysql.db}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + username: ${common.mysql.username} + password: ${common.mysql.password} + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + initial-size: 6 + min-idle: 4 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + #Oracle需要打开注释 + #validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + # 打开PSCache,并且指定每个连接上PSCache的大小 + poolPreparedStatements: true + maxPoolPreparedStatementPerConnectionSize: 20 + # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,stat已去掉 + filters: slf4j + # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 + connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 + wall: + multi-statement-allow: true \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/nacos/config-port.yml b/safety-eval-start/src/main/resources/nacos/config-port.yml new file mode 100644 index 0000000..0255ab3 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-port.yml @@ -0,0 +1,3 @@ +server: + port: 80 +debug: true \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/nacos/config-redis.yml b/safety-eval-start/src/main/resources/nacos/config-redis.yml new file mode 100644 index 0000000..0b4cc30 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-redis.yml @@ -0,0 +1,14 @@ +spring: + redis: + host: ${common.redis.host} + password: ${common.redis.password} + port: ${common.redis.port} + timeout: 15000 + database: 0 + prefix: dragon + jedis: + pool: + max-active: 600 + max-idle: 300 + max-wait: 15000 + min-idle: 10 \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/nacos/config-sdk.yml b/safety-eval-start/src/main/resources/nacos/config-sdk.yml new file mode 100644 index 0000000..e352c19 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-sdk.yml @@ -0,0 +1,19 @@ +sdk: + server: + symmetry-url: jjb-saas-application/application/applications/server/secure/ + app-key: jjb-saas-dragon + client: + security: + gateway: ${gateway.network.http.external} + appKey: ${sdk.client.app-key} + desensitization: + symmetric-key: 1234567887654321 + logging: + gateway: ${sdk.client.security.gateway} + appKey: ${sdk.client.security.app-key} + clientLoggingEnable: true + level: debug + username: user + password: 123456 + showConsoleLog: true + formatConsoleLogJson: true \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/nacos/config-spring.yml b/safety-eval-start/src/main/resources/nacos/config-spring.yml new file mode 100644 index 0000000..284ddb4 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/config-spring.yml @@ -0,0 +1,89 @@ +spring: + zipkin: + #zipkin服务所在地址 + base-url: http://jjb-saas-zipkin/ + sender: + type: web #使用http的方式传输数据 + #配置采样百分比 + sleuth: + sampler: + probability: 1 # 将采样比例设置为 1.0,也就是全部都需要。默认是0.1也就是10%,一般情况下,10%就够用了 + web: + resources: + cache: + cachecontrol: + no-store: false + max-age: 10000 + no-cache: false + autoconfigure: + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure + main: + allow-bean-definition-overriding: true + mvc: + pathmatch: + matching-strategy: ant_path_matcher + messages: + basename: i18n.message + encoding: UTF-8 + flyway: + # 是否启用flyway + enabled: true + # 编码格式,默认UTF-8 + encoding: UTF-8 + # 迁移sql脚本文件存放路径,默认db/migration + locations: classpath:db/migration + # 迁移sql脚本文件名称的前缀,默认V + sql-migration-prefix: V + # 迁移sql脚本文件名称的分隔符,默认2个下划线__ + sql-migration-separator: __ + # 迁移sql脚本文件名称的后缀 + sql-migration-suffixes: .sql + # 迁移时是否进行校验,默认true + validate-on-migrate: true + # 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表 + baseline-on-migrate: true +server: + tomcat: + max-http-post-size: 200MB + connection-timeout: 180000 +fastjson: + parser: + safeMode: true +mvc: + pathmatch: + matching-strategy: ANT_PATH_MATCHER +thymeleaf: + prefix: classpath:/templates/ + cache: false +dubbo: + application: + name: ${spring.application.name} + registry: + timeout: 20000 + address: nacos://${spring.cloud.nacos.config.server-addr}?namespace=${spring.cloud.nacos.config.namespace}-facade + check: false + filter: providerContextFilter + protocol: + port: -1 + name: dubbo + consumer: + timeout: 20000 + check: false + filter: consumerContextFilter +logging: + config: classpath:jjb-saas-logback-spring.xml + level: + com.alibaba.nacos.client.naming: OFF + com.alibaba.nacos.client.config.impl: OFF + com.alibaba.nacos.common.remote.client: OFF + +datapermssion: + tenantcondition: + defaultversion: NEWERSION + +easy-retry: + server: + host: http://jjb-saas-config + port: 1788 + + diff --git a/safety-eval-start/src/main/resources/nacos/jjb-saas-demo.yml b/safety-eval-start/src/main/resources/nacos/jjb-saas-demo.yml new file mode 100644 index 0000000..536d952 --- /dev/null +++ b/safety-eval-start/src/main/resources/nacos/jjb-saas-demo.yml @@ -0,0 +1,18 @@ +sdk: + client: + app-key: e6ab3c9abda747b39d7cc12b6dc0f5a0 + gateway: + url: ${common.gateway.network.http.intranet} +swagger: + enabled: ${common.swagger.enabled} + title: 例子 + description: 这是例子项目 + version: ${application.version} + group-name: 例子 +springfox: + documentation: + swagger-ui: + base-url: ${application.gateway} + swagger: + v2: + path: /${application.gateway}/v2/api-docs \ No newline at end of file diff --git a/safety-eval-start/src/main/resources/sdk-prod2.yml b/safety-eval-start/src/main/resources/sdk-prod2.yml new file mode 100644 index 0000000..52bb380 --- /dev/null +++ b/safety-eval-start/src/main/resources/sdk-prod2.yml @@ -0,0 +1,51 @@ +sdk: + server: + app-key: 8790123e6cf1441d9e618346e9c7a17f + client: + gateway: + url: ${common.gateway.network.http.external} + route: + - client: + system-code: ${application.name} + name: ${application.cn-name}-后端 + group-code: public_api + service: + system-code: ${application.name} + name: ${application.cn-name}-后端 + group-code: public_api + strip-prefix: 0 + uri: http://${application.name} + path: /${application.gateway}/** + - client: + system-code: ${application.name}-container + name: ${application.cn-name}-前端 + group-code: public_api + service: + system-code: ${application.name}-container + name: ${application.cn-name}-前端 + group-code: public_api + strip-prefix: 0 + uri: http://jjb-saas-base + path: /${application.gateway}/container/** + order: -2 +openapi: + appId: 2070081274042777600 + appKey: dd367066994a4e93a49e847f26462f60 + appSecret: 9dc007e9-54a1-46d2-af11-589ad117454f + appPublicKey: 3059301306072a8648ce3d020106082a811ccf5501822d03420004023c307eab0553b42f6bc983c299ca2f61f4779846742572a0022c3fd33260997281fd57202bad8e9b9b55da8bda311acc1ac49873ba70f583e0245a7c9fa3aa + appPrivateKey: 3059301306072a8648ce3d020106082a811ccf5501822d0342000446043bd54674d84483cf64b72afa7e6b01b8ca2932a59317ff456c7c047636e39f7a1f00379f79cfba280446195e5b0c2bc34727dac6fd3a8206f2d856ed84d4 + encryptType: SM2 + platform: + - name: default + openPublicKey: 3059301306072a8648ce3d020106082a811ccf5501822d03420004023c307eab0553b42f6bc983c299ca2f61f4779846742572a0022c3fd33260997281fd57202bad8e9b9b55da8bda311acc1ac49873ba70f583e0245a7c9fa3aa + url: ${common.gateway.network.http.intranet} + protocol: HTTP + defaultPlatform: true + ##ciphertext plaintext + type: plaintext + apiPlatform: + - name: default + #多个可以逗号隔开 + apiCode: test:01 + #多个可以逗号隔开,可以为空 + tenantIds: 1838408702262321152