diff --git a/lyzsys-server/pom.xml b/lyzsys-server/pom.xml index bb902a6..704857b 100644 --- a/lyzsys-server/pom.xml +++ b/lyzsys-server/pom.xml @@ -32,89 +32,6 @@ ${revision} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - org.springframework.boot diff --git a/pom.xml b/pom.xml index 0ae3f05..d235e7b 100644 --- a/pom.xml +++ b/pom.xml @@ -18,17 +18,6 @@ lyzsys-module-system lyzsys-module-infra - - - - - - - - - - - ${project.artifactId} diff --git a/script/docker/Docker-HOWTO.md b/script/docker/Docker-HOWTO.md deleted file mode 100644 index 6e00b20..0000000 --- a/script/docker/Docker-HOWTO.md +++ /dev/null @@ -1,49 +0,0 @@ -# Docker Build & Up - -目标: 快速部署体验系统,帮助了解系统之间的依赖关系。 -依赖:docker compose v2,删除`name: lyzsys-system`,降低`version`版本为`3.3`以下,支持`docker-compose`。 - -## 功能文件列表 - -```text -. -├── Docker-HOWTO.md -├── docker-compose.yml -├── docker.env <-- 提供docker-compose环境变量配置 -├── lyzsys-server -│ └── Dockerfile -└── lyzsys-ui-admin - ├── .dockerignore - ├── Dockerfile - └── nginx.conf <-- 提供基础配置,gzip压缩、api转发 -``` - -## 构建 jar 包 - -```shell -# 创建maven缓存volume -docker volume create --name lyzsys-maven-repo - -docker run -it --rm --name lyzsys-maven \ - -v lyzsys-maven-repo:/root/.m2 \ - -v $PWD:/usr/src/mymaven \ - -w /usr/src/mymaven \ - maven mvn clean install package '-Dmaven.test.skip=true' -``` - -## 构建启动服务 - -```shell -docker compose --env-file docker.env up -d -``` - -首次运行会自动构建容器。可以通过`docker compose build [service]`来手动构建所有或某个docker镜像 - -`--env-file docker.env`为可选参数,只是展示了通过`.env`文件配置容器启动的环境变量,`docker-compose.yml`本身已经提供足够的默认参数来正常运行系统。 - -## 服务器的宿主机端口映射 - -- admin ui: http://localhost:8080 -- api server: http://localhost:48080 -- mysql: root/123456, port: 3306 -- redis: port: 6379 diff --git a/script/docker/docker-compose.yml b/script/docker/docker-compose.yml deleted file mode 100644 index 2979e17..0000000 --- a/script/docker/docker-compose.yml +++ /dev/null @@ -1,84 +0,0 @@ -version: "3.4" - -name: lyzsys-system - -services: - mysql: - container_name: lyzsys-mysql - image: mysql:8 - restart: unless-stopped - tty: true - ports: - - "3306:3306" - environment: - MYSQL_DATABASE: ${MYSQL_DATABASE:-ruoyi-vue-pro} - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-123456} - volumes: - - mysql:/var/lib/mysql/ - - ../../sql/mysql/ruoyi-vue-pro.sql:/docker-entrypoint-initdb.d/ruoyi-vue-pro.sql:ro - - redis: - container_name: lyzsys-redis - image: redis:6-alpine - restart: unless-stopped - ports: - - "6379:6379" - volumes: - - redis:/data - - server: - container_name: lyzsys-server - build: - context: ./lyzsys-server/ - image: lyzsys-server - restart: unless-stopped - ports: - - "48080:48080" - environment: - # https://github.com/polovyivan/docker-pass-configs-to-container - SPRING_PROFILES_ACTIVE: local - JAVA_OPTS: - ${JAVA_OPTS:- - -Xms512m - -Xmx512m - -Djava.security.egd=file:/dev/./urandom - } - ARGS: - --spring.datasource.dynamic.datasource.master.url=${MASTER_DATASOURCE_URL:-jdbc:mysql://lyzsys-mysql:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true} - --spring.datasource.dynamic.datasource.master.username=${MASTER_DATASOURCE_USERNAME:-root} - --spring.datasource.dynamic.datasource.master.password=${MASTER_DATASOURCE_PASSWORD:-123456} - --spring.datasource.dynamic.datasource.slave.url=${SLAVE_DATASOURCE_URL:-jdbc:mysql://lyzsys-mysql:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true} - --spring.datasource.dynamic.datasource.slave.username=${SLAVE_DATASOURCE_USERNAME:-root} - --spring.datasource.dynamic.datasource.slave.password=${SLAVE_DATASOURCE_PASSWORD:-123456} - --spring.redis.host=${REDIS_HOST:-lyzsys-redis} - depends_on: - - mysql - - redis - - admin: - container_name: lyzsys-admin - build: - context: ./lyzsys-ui-admin - args: - NODE_ENV: - ENV=${NODE_ENV:-production} - PUBLIC_PATH=${PUBLIC_PATH:-/} - VUE_APP_TITLE=${VUE_APP_TITLE:-芋道管理系统} - VUE_APP_BASE_API=${VUE_APP_BASE_API:-/prod-api} - VUE_APP_APP_NAME=${VUE_APP_APP_NAME:-/} - VUE_APP_TENANT_ENABLE=${VUE_APP_TENANT_ENABLE:-true} - VUE_APP_CAPTCHA_ENABLE=${VUE_APP_CAPTCHA_ENABLE:-true} - VUE_APP_DOC_ENABLE=${VUE_APP_DOC_ENABLE:-true} - VUE_APP_BAIDU_CODE=${VUE_APP_BAIDU_CODE:-fadc1bd5db1a1d6f581df60a1807f8ab} - image: lyzsys-admin - restart: unless-stopped - ports: - - "8080:80" - depends_on: - - server - -volumes: - mysql: - driver: local - redis: - driver: local diff --git a/script/docker/docker.env b/script/docker/docker.env deleted file mode 100644 index 1b6f170..0000000 --- a/script/docker/docker.env +++ /dev/null @@ -1,25 +0,0 @@ -## mysql -MYSQL_DATABASE=ruoyi-vue-pro -MYSQL_ROOT_PASSWORD=123456 - -## server -JAVA_OPTS=-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom - -MASTER_DATASOURCE_URL=jdbc:mysql://lyzsys-mysql:3306/${MYSQL_DATABASE}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true -MASTER_DATASOURCE_USERNAME=root -MASTER_DATASOURCE_PASSWORD=${MYSQL_ROOT_PASSWORD} -SLAVE_DATASOURCE_URL=${MASTER_DATASOURCE_URL} -SLAVE_DATASOURCE_USERNAME=${MASTER_DATASOURCE_USERNAME} -SLAVE_DATASOURCE_PASSWORD=${MASTER_DATASOURCE_PASSWORD} -REDIS_HOST=lyzsys-redis - -## admin -NODE_ENV=production -PUBLIC_PATH=/ -VUE_APP_TITLE=芋道管理系统 -VUE_APP_BASE_API=/prod-api -VUE_APP_APP_NAME=/ -VUE_APP_TENANT_ENABLE=true -VUE_APP_CAPTCHA_ENABLE=true -VUE_APP_DOC_ENABLE=true -VUE_APP_BAIDU_CODE=fadc1bd5db1a1d6f581df60a1807f8ab diff --git a/script/idea/http-client.env.json b/script/idea/http-client.env.json deleted file mode 100644 index e6e8a7c..0000000 --- a/script/idea/http-client.env.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "local": { - "baseUrl": "http://127.0.0.1:48080/admin-api", - "token": "test1", - "adminTenantId": "1", - - "appApi": "http://127.0.0.1:48080/app-api", - "appToken": "test247", - "appTenantId": "1" - }, - "gateway": { - "baseUrl": "http://127.0.0.1:8888/admin-api", - "token": "test1", - "adminTenantId": "1", - - "appApi": "http://127.0.0.1:8888/app-api", - "appToken": "test1", - "appTenantId": "1" - } -} diff --git a/script/jenkins/Jenkinsfile b/script/jenkins/Jenkinsfile deleted file mode 100644 index db5264d..0000000 --- a/script/jenkins/Jenkinsfile +++ /dev/null @@ -1,60 +0,0 @@ -#!groovy -pipeline { - - agent any - - parameters { - string(name: 'TAG_NAME', defaultValue: '', description: '') - } - - environment { - // DockerHub 凭证 ID(登录您的 DockerHub) - DOCKER_CREDENTIAL_ID = 'dockerhub-id' - // GitHub 凭证 ID (推送 tag 到 GitHub 仓库) - GITHUB_CREDENTIAL_ID = 'github-id' - // kubeconfig 凭证 ID (访问接入正在运行的 Kubernetes 集群) - KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig' - // 镜像的推送 - REGISTRY = 'docker.io' - // DockerHub 账号名 - DOCKERHUB_NAMESPACE = 'docker_username' - // GitHub 账号名 - GITHUB_ACCOUNT = 'https://gitee.com/zhijiantianya/ruoyi-vue-pro' - // 应用名称 - APP_NAME = 'lyzsys-server' - // 应用部署路径 - APP_DEPLOY_BASE_DIR = '/media/pi/KINGTON/data/work/projects/' - } - - stages { - stage('检出') { - steps { - git url: "https://gitee.com/will-we/ruoyi-vue-pro.git", - branch: "devops" - } - } - - stage('构建') { - steps { - // TODO 解决多环境链接、密码不同配置临时方案 - sh 'if [ ! -d "' + "${env.HOME}" + '/resources" ];then\n' + - ' echo "配置文件不存在无需修改"\n' + - 'else\n' + - ' cp -rf ' + "${env.HOME}" + '/resources/*.yaml ' + "${env.APP_NAME}" + '/src/main/resources\n' + - ' echo "配置文件替换"\n' + - 'fi' - sh 'mvn clean package -Dmaven.test.skip=true' - } - } - - stage('部署') { - steps { - sh 'cp -f ' + ' bin/deploy.sh ' + "${env.APP_DEPLOY_BASE_DIR}" + "${env.APP_NAME}" - sh 'cp -f ' + "${env.APP_NAME}" + '/target/*.jar ' + "${env.APP_DEPLOY_BASE_DIR}" + "${env.APP_NAME}" +'/build/' - archiveArtifacts "${env.APP_NAME}" + '/target/*.jar' - sh 'chmod +x ' + "${env.APP_DEPLOY_BASE_DIR}" + "${env.APP_NAME}" + '/deploy.sh' - sh 'bash ' + "${env.APP_DEPLOY_BASE_DIR}" + "${env.APP_NAME}" + '/deploy.sh' - } - } - } -} diff --git a/script/shell/deploy.sh b/script/shell/deploy.sh deleted file mode 100644 index 1667aa6..0000000 --- a/script/shell/deploy.sh +++ /dev/null @@ -1,160 +0,0 @@ -#!/bin/bash -set -e - -DATE=$(date +%Y%m%d%H%M) -# 基础路径 -BASE_PATH=/work/projects/lyzsys-server -# 编译后 jar 的地址。部署时,Jenkins 会上传 jar 包到该目录下 -SOURCE_PATH=$BASE_PATH/build -# 服务名称。同时约定部署服务的 jar 包名字也为它。 -SERVER_NAME=lyzsys-server -# 环境 -PROFILES_ACTIVE=development -# 健康检查 URL -HEALTH_CHECK_URL=http://127.0.0.1:48080/actuator/health/ - -# heapError 存放路径 -HEAP_ERROR_PATH=$BASE_PATH/heapError -# JVM 参数 -JAVA_OPS="-Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$HEAP_ERROR_PATH" - -# SkyWalking Agent 配置 -#export SW_AGENT_NAME=$SERVER_NAME -#export SW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.0.84:11800 -#export SW_GRPC_LOG_SERVER_HOST=192.168.0.84 -#export SW_AGENT_TRACE_IGNORE_PATH="Redisson/PING,/actuator/**,/admin/**" -#export JAVA_AGENT=-javaagent:/work/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar - -# 备份 -function backup() { - # 如果不存在,则无需备份 - if [ ! -f "$BASE_PATH/$SERVER_NAME.jar" ]; then - echo "[backup] $BASE_PATH/$SERVER_NAME.jar 不存在,跳过备份" - # 如果存在,则备份到 backup 目录下,使用时间作为后缀 - else - echo "[backup] 开始备份 $SERVER_NAME ..." - cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar - echo "[backup] 备份 $SERVER_NAME 完成" - fi -} - -# 最新构建代码 移动到项目环境 -function transfer() { - echo "[transfer] 开始转移 $SERVER_NAME.jar" - - # 删除原 jar 包 - if [ ! -f "$BASE_PATH/$SERVER_NAME.jar" ]; then - echo "[transfer] $BASE_PATH/$SERVER_NAME.jar 不存在,跳过删除" - else - echo "[transfer] 移除 $BASE_PATH/$SERVER_NAME.jar 完成" - rm $BASE_PATH/$SERVER_NAME.jar - fi - - # 复制新 jar 包 - echo "[transfer] 从 $SOURCE_PATH 中获取 $SERVER_NAME.jar 并迁移至 $BASE_PATH ...." - cp $SOURCE_PATH/$SERVER_NAME.jar $BASE_PATH - - echo "[transfer] 转移 $SERVER_NAME.jar 完成" -} - -# 停止:优雅关闭之前已经启动的服务 -function stop() { - echo "[stop] 开始停止 $BASE_PATH/$SERVER_NAME" - PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}') - # 如果 Java 服务启动中,则进行关闭 - if [ -n "$PID" ]; then - # 正常关闭 - echo "[stop] $BASE_PATH/$SERVER_NAME 运行中,开始 kill [$PID]" - kill -15 $PID - # 等待最大 120 秒,直到关闭完成。 - for ((i = 0; i < 120; i++)) - do - sleep 1 - PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}') - if [ -n "$PID" ]; then - echo -e ".\c" - else - echo "[stop] 停止 $BASE_PATH/$SERVER_NAME 成功" - break - fi - done - - # 如果正常关闭失败,那么进行强制 kill -9 进行关闭 - if [ -n "$PID" ]; then - echo "[stop] $BASE_PATH/$SERVER_NAME 失败,强制 kill -9 $PID" - kill -9 $PID - fi - # 如果 Java 服务未启动,则无需关闭 - else - echo "[stop] $BASE_PATH/$SERVER_NAME 未启动,无需停止" - fi -} - -# 启动:启动后端项目 -function start() { - # 开启启动前,打印启动参数 - echo "[start] 开始启动 $BASE_PATH/$SERVER_NAME" - echo "[start] JAVA_OPS: $JAVA_OPS" - echo "[start] JAVA_AGENT: $JAVA_AGENT" - echo "[start] PROFILES: $PROFILES_ACTIVE" - - # 开始启动 - BUILD_ID=dontKillMe nohup java -server $JAVA_OPS $JAVA_AGENT -jar $BASE_PATH/$SERVER_NAME.jar --spring.profiles.active=$PROFILES_ACTIVE & - echo "[start] 启动 $BASE_PATH/$SERVER_NAME 完成" -} - -# 健康检查:自动判断后端项目是否正常启动 -function healthCheck() { - # 如果配置健康检查,则进行健康检查 - if [ -n "$HEALTH_CHECK_URL" ]; then - # 健康检查最大 120 秒,直到健康检查通过 - echo "[healthCheck] 开始通过 $HEALTH_CHECK_URL 地址,进行健康检查"; - for ((i = 0; i < 120; i++)) - do - # 请求健康检查地址,只获取状态码。 - result=`curl -I -m 10 -o /dev/null -s -w %{http_code} $HEALTH_CHECK_URL || echo "000"` - # 如果状态码为 200,则说明健康检查通过 - if [ "$result" == "200" ]; then - echo "[healthCheck] 健康检查通过"; - break - # 如果状态码非 200,则说明未通过。sleep 1 秒后,继续重试 - else - echo -e ".\c" - sleep 1 - fi - done - - # 健康检查未通过,则异常退出 shell 脚本,不继续部署。 - if [ ! "$result" == "200" ]; then - echo "[healthCheck] 健康检查不通过,可能部署失败。查看日志,自行判断是否启动成功"; - tail -n 10 nohup.out - exit 1; - # 健康检查通过,打印最后 10 行日志,可能部署的人想看下日志。 - else - tail -n 10 nohup.out - fi - # 如果未配置健康检查,则 sleep 120 秒,人工看日志是否部署成功。 - else - echo "[healthCheck] HEALTH_CHECK_URL 未配置,开始 sleep 120 秒"; - sleep 120 - echo "[healthCheck] sleep 120 秒完成,查看日志,自行判断是否启动成功"; - tail -n 50 nohup.out - fi -} - -# 部署 -function deploy() { - cd $BASE_PATH - # 备份原 jar - backup - # 停止 Java 服务 - stop - # 部署新 jar - transfer - # 启动 Java 服务 - start - # 健康检查 - healthCheck -} - -deploy