From 43a1a8831b43b00b928f5d996e9a4def5c0e9e45 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Wed, 14 Jan 2026 21:31:13 +0800 Subject: [PATCH] update --- compose-file/docker-compose-prod.yml | 121 ---- compose-file/docker-compose-test.yml | 121 ---- compose-file/docker-compose-uat.yml | 121 ---- compose-file/golang-docker-compose.yml | 484 +++++++++++++ compose-file/python-docker-compose.yml | 329 +++++++++ ...ev.yml => xiaomayi-web-docker-compose.yml} | 8 +- config-file/djangoadminConfig.yml | 596 ++++++++++++++++ .../{imagesConfig.yml => dockerConfig.yml} | 0 config-file/easygoadminConfig.yml | 661 ++++++++++++++++++ config-file/nexusConfig.yml | 240 +++++++ config-file/xiaomayiConfig.yml | 6 +- config-file/yunhengConfig.yml | 483 +++++++++++++ scripts-file/deploy_env copy.sh | 132 +--- scripts-file/deploy_env.sh | 3 + scripts-file/docker-env-prod.sh | 2 +- 15 files changed, 2836 insertions(+), 471 deletions(-) delete mode 100644 compose-file/docker-compose-prod.yml delete mode 100644 compose-file/docker-compose-test.yml delete mode 100644 compose-file/docker-compose-uat.yml create mode 100644 compose-file/golang-docker-compose.yml create mode 100644 compose-file/python-docker-compose.yml rename compose-file/{docker-compose-dev.yml => xiaomayi-web-docker-compose.yml} (93%) create mode 100644 config-file/djangoadminConfig.yml rename config-file/{imagesConfig.yml => dockerConfig.yml} (100%) create mode 100644 config-file/easygoadminConfig.yml create mode 100644 config-file/nexusConfig.yml create mode 100644 config-file/yunhengConfig.yml diff --git a/compose-file/docker-compose-prod.yml b/compose-file/docker-compose-prod.yml deleted file mode 100644 index c2af120..0000000 --- a/compose-file/docker-compose-prod.yml +++ /dev/null @@ -1,121 +0,0 @@ -# Docker Compose 文件版本定义 -# 3.7 版本支持丰富的部署配置和资源限制功能 -version: '3.7' - -# 服务定义块,包含所有需要部署的容器服务 -services: - # 后端服务 - 小蚂蚁管理系统后端 - xiaomayi-admin: - # 镜像地址:从私有Harbor仓库拉取镜像 - # ${VERSION:-latest} 表示使用VERSION环境变量,如果未设置则使用latest标签 - image: manage.harbor.djangoadmin.cn/xiaomayi/xiaomayi-admin:${VERSION:-latest} - - # 容器名称:指定容器的名称,便于管理和识别 - container_name: xiaomayi-admin - - # 重启策略:always表示容器退出时总是自动重启 - # 确保服务在异常退出后能够自动恢复 - restart: always - - # 网络模式:host表示使用主机网络模式 - # 容器直接使用宿主机的网络栈,性能更好,端口直接暴露在主机上 - network_mode: host - - # 端口映射:将容器内的8081端口映射到主机的8081端口 - # 格式:主机端口:容器端口 - ports: - - 8081:8081 - - # 数据卷挂载:将主机文件或目录挂载到容器内 - volumes: - # 挂载主机hosts文件到容器内(只读模式) - # 用于容器内的域名解析,与主机保持一致 - - /etc/hosts:/etc/hosts:ro - - # 挂载上传目录:将当前目录下的upload目录挂载到容器的/opt/apps/upload - # 用于持久化存储上传的文件 - - $PWD/upload:/opt/apps/upload - - # 挂载包目录:将当前目录下的package目录挂载到容器的/opt/apps/package - # 用于存储应用程序包或其他资源文件 - - $PWD/package:/opt/apps/package - - # 部署配置:定义资源限制和预留(Docker Swarm模式下的配置) - # 在单机Docker Compose中也会被部分支持 - deploy: - resources: - # 资源限制:容器最多可以使用的资源量 - limits: - cpus: '2' # 最多使用2个CPU核心 - memory: 1.5G # 最多使用1.5GB内存 - # 资源预留:保证容器至少获得的资源量 - reservations: - cpus: '0.25' # 至少保留0.25个CPU核心 - memory: 500M # 至少保留500MB内存 - - # 前端服务 - 小蚂蚁管理系统前端 - xiaomayi-web2: - # 镜像地址:前端服务的Docker镜像 - image: manage.harbor.djangoadmin.cn/xiaomayi/xiaomayi-web2:${VERSION:-latest} - - # 容器名称:前端服务容器名称 - container_name: xiaomayi-web2 - - # 重启策略:总是自动重启 - restart: always - - # 网络模式:使用主机网络模式 - network_mode: host - - # 端口映射:前端服务监听8082端口 - ports: - - 8082:8082 - - # 数据卷挂载 - volumes: - # 挂载主机hosts文件(只读) - - /etc/hosts:/etc/hosts:ro - - # 挂载上传目录(读写模式) - # :rw 表示读写权限(默认模式,显式声明更清晰) - - $PWD/upload:/opt/apps/upload:rw - - # 挂载包目录(读写模式) - - $PWD/package:/opt/apps/package:rw - - # 环境变量:设置容器内的环境变量 - environment: - # 语言设置:设置为英文UTF-8编码 - - LANG=en_US.UTF-8 - - # 本地化设置:全部使用英文UTF-8 - - LC_ALL=en_US.UTF-8 - - # Java虚拟机参数:设置文件编码为UTF-8 - # 确保中文等特殊字符正确处理 - - JAVA_OPTS=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 - - # 部署配置:资源限制和预留 - deploy: - resources: - # 资源上限 - limits: - cpus: '2' # 最多2个CPU核心 - memory: 1.5G # 最多1.5GB内存 - # 资源保障 - reservations: - cpus: '0.25' # 至少0.25个CPU核心 - memory: 500M # 至少500MB内存 - -# 注意:该配置文件中使用了以下特殊配置: -# 1. network_mode: host - 主机网络模式,容器直接使用主机网络 -# 2. ${VERSION:-latest} - 环境变量替换,支持动态版本控制 -# 3. deploy.resources - Docker Swarm模式的资源管理,在单机模式下也有部分效果 -# 4. 多目录挂载 - 实现数据持久化和主机-容器文件共享 -# 5. 环境变量设置 - 确保应用程序的编码和语言环境正确 - -# 使用说明: -# 1. 部署命令:VERSION=1.2.0 docker-compose up -d -# 2. 查看日志:docker-compose logs -f -# 3. 停止服务:docker-compose down -# 4. 更新服务:VERSION=1.2.1 docker-compose up -d \ No newline at end of file diff --git a/compose-file/docker-compose-test.yml b/compose-file/docker-compose-test.yml deleted file mode 100644 index aeb745f..0000000 --- a/compose-file/docker-compose-test.yml +++ /dev/null @@ -1,121 +0,0 @@ -# Docker Compose 文件版本定义 -# 3.7 版本支持丰富的部署配置和资源限制功能 -version: '3.7' - -# 服务定义块,包含所有需要部署的容器服务 -services: - # 后端服务 - 小蚂蚁管理系统后端 - xiaomayi-admin: - # 镜像地址:从私有Harbor仓库拉取镜像 - # ${VERSION:-latest} 表示使用VERSION环境变量,如果未设置则使用latest标签 - image: 192.168.10.102:8001/xiaomayi/xiaomayi-admin:${VERSION:-latest} - - # 容器名称:指定容器的名称,便于管理和识别 - container_name: xiaomayi-admin - - # 重启策略:always表示容器退出时总是自动重启 - # 确保服务在异常退出后能够自动恢复 - restart: always - - # 网络模式:host表示使用主机网络模式 - # 容器直接使用宿主机的网络栈,性能更好,端口直接暴露在主机上 - network_mode: host - - # 端口映射:将容器内的8081端口映射到主机的8081端口 - # 格式:主机端口:容器端口 - ports: - - 8081:8081 - - # 数据卷挂载:将主机文件或目录挂载到容器内 - volumes: - # 挂载主机hosts文件到容器内(只读模式) - # 用于容器内的域名解析,与主机保持一致 - - /etc/hosts:/etc/hosts:ro - - # 挂载上传目录:将当前目录下的upload目录挂载到容器的/opt/apps/upload - # 用于持久化存储上传的文件 - - $PWD/upload:/opt/apps/upload - - # 挂载包目录:将当前目录下的package目录挂载到容器的/opt/apps/package - # 用于存储应用程序包或其他资源文件 - - $PWD/package:/opt/apps/package - - # 部署配置:定义资源限制和预留(Docker Swarm模式下的配置) - # 在单机Docker Compose中也会被部分支持 - deploy: - resources: - # 资源限制:容器最多可以使用的资源量 - limits: - cpus: '2' # 最多使用2个CPU核心 - memory: 1.5G # 最多使用1.5GB内存 - # 资源预留:保证容器至少获得的资源量 - reservations: - cpus: '0.25' # 至少保留0.25个CPU核心 - memory: 500M # 至少保留500MB内存 - - # 前端服务 - 小蚂蚁管理系统前端 - xiaomayi-web2: - # 镜像地址:前端服务的Docker镜像 - image: 192.168.10.102:8001/xiaomayi/xiaomayi-web2:${VERSION:-latest} - - # 容器名称:前端服务容器名称 - container_name: xiaomayi-web2 - - # 重启策略:总是自动重启 - restart: always - - # 网络模式:使用主机网络模式 - network_mode: host - - # 端口映射:前端服务监听8082端口 - ports: - - 8082:8082 - - # 数据卷挂载 - volumes: - # 挂载主机hosts文件(只读) - - /etc/hosts:/etc/hosts:ro - - # 挂载上传目录(读写模式) - # :rw 表示读写权限(默认模式,显式声明更清晰) - - $PWD/upload:/opt/apps/upload:rw - - # 挂载包目录(读写模式) - - $PWD/package:/opt/apps/package:rw - - # 环境变量:设置容器内的环境变量 - environment: - # 语言设置:设置为英文UTF-8编码 - - LANG=en_US.UTF-8 - - # 本地化设置:全部使用英文UTF-8 - - LC_ALL=en_US.UTF-8 - - # Java虚拟机参数:设置文件编码为UTF-8 - # 确保中文等特殊字符正确处理 - - JAVA_OPTS=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 - - # 部署配置:资源限制和预留 - deploy: - resources: - # 资源上限 - limits: - cpus: '2' # 最多2个CPU核心 - memory: 1.5G # 最多1.5GB内存 - # 资源保障 - reservations: - cpus: '0.25' # 至少0.25个CPU核心 - memory: 500M # 至少500MB内存 - -# 注意:该配置文件中使用了以下特殊配置: -# 1. network_mode: host - 主机网络模式,容器直接使用主机网络 -# 2. ${VERSION:-latest} - 环境变量替换,支持动态版本控制 -# 3. deploy.resources - Docker Swarm模式的资源管理,在单机模式下也有部分效果 -# 4. 多目录挂载 - 实现数据持久化和主机-容器文件共享 -# 5. 环境变量设置 - 确保应用程序的编码和语言环境正确 - -# 使用说明: -# 1. 部署命令:VERSION=1.2.0 docker-compose up -d -# 2. 查看日志:docker-compose logs -f -# 3. 停止服务:docker-compose down -# 4. 更新服务:VERSION=1.2.1 docker-compose up -d \ No newline at end of file diff --git a/compose-file/docker-compose-uat.yml b/compose-file/docker-compose-uat.yml deleted file mode 100644 index c2af120..0000000 --- a/compose-file/docker-compose-uat.yml +++ /dev/null @@ -1,121 +0,0 @@ -# Docker Compose 文件版本定义 -# 3.7 版本支持丰富的部署配置和资源限制功能 -version: '3.7' - -# 服务定义块,包含所有需要部署的容器服务 -services: - # 后端服务 - 小蚂蚁管理系统后端 - xiaomayi-admin: - # 镜像地址:从私有Harbor仓库拉取镜像 - # ${VERSION:-latest} 表示使用VERSION环境变量,如果未设置则使用latest标签 - image: manage.harbor.djangoadmin.cn/xiaomayi/xiaomayi-admin:${VERSION:-latest} - - # 容器名称:指定容器的名称,便于管理和识别 - container_name: xiaomayi-admin - - # 重启策略:always表示容器退出时总是自动重启 - # 确保服务在异常退出后能够自动恢复 - restart: always - - # 网络模式:host表示使用主机网络模式 - # 容器直接使用宿主机的网络栈,性能更好,端口直接暴露在主机上 - network_mode: host - - # 端口映射:将容器内的8081端口映射到主机的8081端口 - # 格式:主机端口:容器端口 - ports: - - 8081:8081 - - # 数据卷挂载:将主机文件或目录挂载到容器内 - volumes: - # 挂载主机hosts文件到容器内(只读模式) - # 用于容器内的域名解析,与主机保持一致 - - /etc/hosts:/etc/hosts:ro - - # 挂载上传目录:将当前目录下的upload目录挂载到容器的/opt/apps/upload - # 用于持久化存储上传的文件 - - $PWD/upload:/opt/apps/upload - - # 挂载包目录:将当前目录下的package目录挂载到容器的/opt/apps/package - # 用于存储应用程序包或其他资源文件 - - $PWD/package:/opt/apps/package - - # 部署配置:定义资源限制和预留(Docker Swarm模式下的配置) - # 在单机Docker Compose中也会被部分支持 - deploy: - resources: - # 资源限制:容器最多可以使用的资源量 - limits: - cpus: '2' # 最多使用2个CPU核心 - memory: 1.5G # 最多使用1.5GB内存 - # 资源预留:保证容器至少获得的资源量 - reservations: - cpus: '0.25' # 至少保留0.25个CPU核心 - memory: 500M # 至少保留500MB内存 - - # 前端服务 - 小蚂蚁管理系统前端 - xiaomayi-web2: - # 镜像地址:前端服务的Docker镜像 - image: manage.harbor.djangoadmin.cn/xiaomayi/xiaomayi-web2:${VERSION:-latest} - - # 容器名称:前端服务容器名称 - container_name: xiaomayi-web2 - - # 重启策略:总是自动重启 - restart: always - - # 网络模式:使用主机网络模式 - network_mode: host - - # 端口映射:前端服务监听8082端口 - ports: - - 8082:8082 - - # 数据卷挂载 - volumes: - # 挂载主机hosts文件(只读) - - /etc/hosts:/etc/hosts:ro - - # 挂载上传目录(读写模式) - # :rw 表示读写权限(默认模式,显式声明更清晰) - - $PWD/upload:/opt/apps/upload:rw - - # 挂载包目录(读写模式) - - $PWD/package:/opt/apps/package:rw - - # 环境变量:设置容器内的环境变量 - environment: - # 语言设置:设置为英文UTF-8编码 - - LANG=en_US.UTF-8 - - # 本地化设置:全部使用英文UTF-8 - - LC_ALL=en_US.UTF-8 - - # Java虚拟机参数:设置文件编码为UTF-8 - # 确保中文等特殊字符正确处理 - - JAVA_OPTS=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 - - # 部署配置:资源限制和预留 - deploy: - resources: - # 资源上限 - limits: - cpus: '2' # 最多2个CPU核心 - memory: 1.5G # 最多1.5GB内存 - # 资源保障 - reservations: - cpus: '0.25' # 至少0.25个CPU核心 - memory: 500M # 至少500MB内存 - -# 注意:该配置文件中使用了以下特殊配置: -# 1. network_mode: host - 主机网络模式,容器直接使用主机网络 -# 2. ${VERSION:-latest} - 环境变量替换,支持动态版本控制 -# 3. deploy.resources - Docker Swarm模式的资源管理,在单机模式下也有部分效果 -# 4. 多目录挂载 - 实现数据持久化和主机-容器文件共享 -# 5. 环境变量设置 - 确保应用程序的编码和语言环境正确 - -# 使用说明: -# 1. 部署命令:VERSION=1.2.0 docker-compose up -d -# 2. 查看日志:docker-compose logs -f -# 3. 停止服务:docker-compose down -# 4. 更新服务:VERSION=1.2.1 docker-compose up -d \ No newline at end of file diff --git a/compose-file/golang-docker-compose.yml b/compose-file/golang-docker-compose.yml new file mode 100644 index 0000000..72e193c --- /dev/null +++ b/compose-file/golang-docker-compose.yml @@ -0,0 +1,484 @@ +version: '3.7' + +# 应用服务 +services: + # 应用服务 + gin_layui: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 + #build: + # context: ./ + # dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8010:8010 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + gin_elevue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8013:8013 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + gin_antdvue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8016:8016 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + beego_layui: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8030:8030 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + beego_elevue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8033:8033 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + beego_antdvue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8036:8036 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + goframe_layui: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8020:8020 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + goframe_elevue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8023:8023 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + goframe_antdvue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8026:8026 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + iris_layui: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8040:8040 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + iris_elevue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8043:8043 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + iris_antdvue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8046:8046 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + echo_layui: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8050:8050 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + echo_elevue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8053:8053 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + echo_antdvue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/easygoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 构建镜像 +# build: +# context: ./ +# dockerfile: Dockerfile + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8056:8056 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/app/public/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" diff --git a/compose-file/python-docker-compose.yml b/compose-file/python-docker-compose.yml new file mode 100644 index 0000000..f40be87 --- /dev/null +++ b/compose-file/python-docker-compose.yml @@ -0,0 +1,329 @@ +version: '3.7' + +# 应用服务 +services: + # 网关服务 + django_layui: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + #build: . + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8010:8010 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 后端服务 + django_elevue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8013:8013 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 后端服务 + django_antdvue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8016:8016 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 网关服务 + flask_layui: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8020:8020 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 后端服务 + flask_elevue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8023:8023 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 后端服务 + flask_antdvue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8026:8026 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + fastapi_layui: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8030:8030 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 后端服务 + fastapi_elevue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8033:8033 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 后端服务 + fastapi_antdvue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8036:8036 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 应用服务 + tornado_layui: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8040:8040 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 后端服务 + tornado_elevue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8043:8043 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" + # 后端服务 + tornado_antdvue: + # 镜像名称 + image: ${DOCKER_REGISTRY_URL}/djangoadmin/${SERVER_NAME}:${VERSION:-latest} + # 容器名称 + container_name: ${SERVER_NAME} + # 将容器运行在特权模式下,意味着容器内的进程将具 + # 有访问宿主机的权限,包括文件系统、设备和系统功能等 + privileged: true + # 指定容器中运行的用户 + user: root + # 启动策略为始终重启 + restart: always + # 设置网络模式为host模式 + network_mode: host + # 端口映射 + ports: + - 8046:8046 + # 文件挂载 + volumes: + - $PWD/${SERVER_NAME}/uploads:/data/apps/uploads + # 日志配置 + logging: + driver: "json-file" + options: + max-size: "500m" + max-file: "10" diff --git a/compose-file/docker-compose-dev.yml b/compose-file/xiaomayi-web-docker-compose.yml similarity index 93% rename from compose-file/docker-compose-dev.yml rename to compose-file/xiaomayi-web-docker-compose.yml index aeb745f..499c20d 100644 --- a/compose-file/docker-compose-dev.yml +++ b/compose-file/xiaomayi-web-docker-compose.yml @@ -8,10 +8,10 @@ services: xiaomayi-admin: # 镜像地址:从私有Harbor仓库拉取镜像 # ${VERSION:-latest} 表示使用VERSION环境变量,如果未设置则使用latest标签 - image: 192.168.10.102:8001/xiaomayi/xiaomayi-admin:${VERSION:-latest} + image: manage.harbor.djangoadmin.cn/${DOCKER_REGISTRYURL_NAMESPACE}/${SERVER_NAME}:${VERSION:-latest} # 容器名称:指定容器的名称,便于管理和识别 - container_name: xiaomayi-admin + container_name: ${SERVER_NAME} # 重启策略:always表示容器退出时总是自动重启 # 确保服务在异常退出后能够自动恢复 @@ -56,10 +56,10 @@ services: # 前端服务 - 小蚂蚁管理系统前端 xiaomayi-web2: # 镜像地址:前端服务的Docker镜像 - image: 192.168.10.102:8001/xiaomayi/xiaomayi-web2:${VERSION:-latest} + image: manage.harbor.djangoadmin.cn/${DOCKER_REGISTRYURL_NAMESPACE}/${SERVER_NAME}:${VERSION:-latest} # 容器名称:前端服务容器名称 - container_name: xiaomayi-web2 + container_name: ${SERVER_NAME} # 重启策略:总是自动重启 restart: always diff --git a/config-file/djangoadminConfig.yml b/config-file/djangoadminConfig.yml new file mode 100644 index 0000000..673de47 --- /dev/null +++ b/config-file/djangoadminConfig.yml @@ -0,0 +1,596 @@ +# ============================================================================== +# 通用配置块 - 包含所有环境共享的配置项 +# ============================================================================== +common: + # 镜像仓库配置 - 定义不同的容器镜像仓库 + registrys: + # 默认仓库配置 - 内部私有仓库 + default: + # 内部私有仓库地址 - 企业内部部署的Harbor或Registry地址 + registry: "192.168.10.102:8001" + # Jenkins凭证ID - 用于仓库认证的凭据ID + registryCredential: "xiaomayi-hub-credentials" + # 仓库中的项目/命名空间名称 - 镜像存放的项目空间 + registryProject: "xiaomayi" + # 仓库类型 - 仓库的技术类型(harbor、acr、dockerhub等) + registryType: "harbor" + # 应用部署基础镜像 + registryImage: "python:3.9.13-rocky8-dos" + + # 阿里云ACR仓库配置 - 云上仓库,用于生产环境或特定场景 + aliyun: + # 阿里云VPC内网地址 - 阿里云容器镜像服务的VPC内网地址,网络性能更优 + registry: "registry-vpc.cn-hangzhou.aliyuncs.com" + # 阿里云仓库认证凭证 - 阿里云访问凭据的Jenkins ID + registryCredential: "aliyun-hub-credentials" + # 阿里云仓库项目名称 - 阿里云ACR中的命名空间 + registryProject: "xiaomayi-base" + # 仓库类型 - 阿里云容器镜像服务 + registryType: "acr" + # 应用部署基础镜像 + registryImage: "python:3.9.13-rocky8-dos" + # Docker Hub配置 - 官方Docker仓库,用于公开镜像 + dockerhub: + # Docker Hub地址 - 官方Docker仓库地址 + registry: "index.docker.io" + # Docker Hub认证凭证 - Docker Hub账号的Jenkins凭据ID + registryCredential: "dockerhub-credentials" + # Docker Hub项目名称 - 用户名或组织名 + registryProject: "xiaomayi-base" + # 仓库类型 - 官方Docker仓库 + registryType: "dockerhub" + # 应用部署基础镜像 + registryImage: "python:3.9.13-rocky8-dos" + + # 钉钉消息 + dingtalk: + # 凭证ID - Jenkins中存储的DingTalk认证凭据ID + credentialsId: "jenkins-dingtalk-robot" + + # 通知配置 - 构建结果通知设置 + notification: + # 构建成功通知配置 + success: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 短信通知 + #sms: ["15295504151"] + # 钉钉通知 + dingtalk: true + # Slack通知 + slack: false + # 构建失败通知配置 + failure: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 短信通知 + # sms: ["15295504151"] + # 钉钉通知 + dingtalk: true + # Slack通知 + slack: false + # 构建被中止通知 + aborted: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 短信通知 + #sms: ["15295504151"] + # 钉钉通知 + dingtalk: true + # Slack通知 + slack: false + # 构建不稳定通知配置 + unstable: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 钉钉通知 + dingtalk: true + + # 构建策略 - 构建过程的策略配置 + buildStrategy: + retryCount: 3 # 构建失败重试次数 + timeoutMinutes: 60 # 构建超时时间(分钟) + cleanupWorkspace: true # 构建完成后是否清理工作空间 + enableCaching: true # 是否启用Docker构建缓存 + + # 部署相关配置 + deployScript: "deploy_env.sh" # 部署执行的shell脚本文件名 + deployPath: "/opt/apps" # 目标服务器上的应用部署根路径 + + # ============================================================================== + # 短信服务配置 + # 描述: 定义短信通知服务的相关配置,支持多种短信服务商和模板配置 + # ============================================================================== + + # 短信服务提供商配置 + sms: + # 短信服务商 - 指定使用的短信服务平台 + # 可选值: + # - 'aliyun': 阿里云短信服务(推荐) + # - 'tencent': 腾讯云短信服务 + # - 'yunpian': 云片短信服务 + provider: 'aliyun' + + # Jenkins凭据ID - 存储短信服务认证信息的Jenkins凭据标识 + # 凭据内容格式建议为JSON或key=value格式,包含accessKeyId/accessKeySecret等认证信息 + credentialsId: 'jenkins-aliyun-credentials' + + # 默认短信签名 - 在短信开头显示的签名内容 + # 需要先在短信服务平台申请并通过审核的签名 + signName: '小蚂蚁云' + + # ============================================================================== + # 短信模板配置 - 定义不同场景下的短信模板 + # 每个模板需要先在短信服务平台创建并通过审核 + # ============================================================================== + templates: + # -------------------------------------------------------------------------- + # 构建成功短信模板配置 + # 用途: 当构建任务成功完成时发送的通知短信 + # -------------------------------------------------------------------------- + build_success: + # 模板代码 - 短信服务平台审核通过的模板ID + # 阿里云: SMS_开头的一串数字字母组合 + # 腾讯云: 纯数字模板ID + # 云片: 长整型数字模板ID + templateCode: 'SMS_231440070' + + # 模板签名 - 可覆盖默认签名,使用特定的签名 + # 如果未设置,则使用顶层的默认签名 + signName: '小蚂蚁云' + + # 模板变量说明(在短信平台配置时定义): + # 通常包含: project, branch, status, duration, time 等变量 + # 示例模板内容: "您的项目${project}构建${status},耗时${duration},时间${time}" + + # -------------------------------------------------------------------------- + # 构建失败短信模板配置 + # 用途: 当构建任务失败时发送的告警短信 + # -------------------------------------------------------------------------- + build_failure: + # 模板代码 - 失败通知的专用模板ID + templateCode: 'SMS_231440070' + + # 模板签名 - 失败通知使用的签名 + signName: '小蚂蚁云' + + # 模板变量说明: + # 通常包含: project, branch, status, duration, error, time 等变量 + # 示例模板内容: "警告:项目${project}构建${status},错误:${error},时间${time}" + + # -------------------------------------------------------------------------- + # 部署通知短信模板(示例配置,可根据需要启用) + # 用途: 当应用部署完成时发送的通知短信 + # -------------------------------------------------------------------------- + # deployment: + # templateCode: 'SMS_DEPLOY_001' + # signName: '小蚂蚁云' + + # -------------------------------------------------------------------------- + # 系统告警短信模板(示例配置,可根据需要启用) + # 用途: 当系统发生异常或达到告警阈值时发送的短信 + # -------------------------------------------------------------------------- + # alert: + # templateCode: 'SMS_ALERT_001' + # signName: '小蚂蚁云' + + # 环境配置文件 - 定义不同环境的特定配置 + profiles: + # -------------------------------------------------------------------------- + # 开发环境配置 - 用于开发测试,部署频率高,配置相对宽松 + # -------------------------------------------------------------------------- + dev: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S110服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S202服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + TZ: "Asia/Shanghai" # 时区设置:亚洲/上海 + + # 部署策略配置 + deploymentStrategy: "rolling" # 部署策略:rolling-滚动部署 + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 2 # 最大并行部署服务器数量 + retryAttempts: 3 # 部署失败重试次数 + + # 健康检查配置 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # -------------------------------------------------------------------------- + # 测试环境配置 - 用于集成测试,配置接近生产环境 + # -------------------------------------------------------------------------- + test: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S110服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S110服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + TZ: "Asia/Shanghai" + + # 部署策略配置 + deploymentStrategy: "rolling" + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 1 # 测试环境串行部署,便于问题排查 + retryAttempts: 2 + + # 健康检查配置 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # -------------------------------------------------------------------------- + # 用户验收测试环境配置 - 模拟生产环境,用于最终验收测试 + # -------------------------------------------------------------------------- + uat: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S110服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S110服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + TZ: "Asia/Shanghai" + + # 部署策略配置 + deploymentStrategy: "blue-green" # 蓝绿部署策略,减少停机时间 + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 1 + retryAttempts: 1 # UAT环境不重试,立即反馈问题 + + # 健康检查配置 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # -------------------------------------------------------------------------- + # 生产环境配置 - 线上真实环境,配置最为严格 + # -------------------------------------------------------------------------- + prod: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S210服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S220服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + TZ: "Asia/Shanghai" + + # 部署策略配置 + deploymentStrategy: "canary" # 金丝雀部署策略,逐步发布降低风险 + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 1 # 生产环境单台串行部署,确保稳定性 + retryAttempts: 3 # 部署失败重试次数 + canaryPercentage: 25 # 首批金丝雀发布比例(25%) + + # 健康检查配置 + healthCheckEnabled: true # 启用健康检查 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckRetries: 5 # 健康检查5次重试 + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # 回滚配置 + rollbackEnabled: true # 启用自动回滚 + rollbackOnFailure: true # 部署失败时自动回滚 + rollbackTimeout: 300 # 回滚操作超时时间(300秒=5分钟) + +# ============================================================================== +# 分支构建配置 - 定义不同Git分支的构建参数 +# ============================================================================== +branchConfig: + # 开发分支配置 + dev: + # Jenkins代理 + jenkinsAgent: "S204-docker" + # Docker镜像构建配置 + docker: + dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 + buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 + + # 测试分支配置 + test: + # Jenkins代理 + jenkinsAgent: "S204-docker" + # Docker镜像构建配置 + docker: + dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 + buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 + + # 主分支配置(生产环境) + master: + # Jenkins代理 + jenkinsAgent: "S204-docker" + # Docker镜像构建配置 + docker: + dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 + buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 + + +# ============================================================================== +# 服务配置 - 定义每个微服务的特定配置 +# ============================================================================== +serviceConfig: + django_layui2: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "django_layui2" + packageName: "django_layui2" + servicePath: "." + pyFile: "manage.py" + port: "8010" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + django_elevue: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "django_elevue" + packageName: "django_elevue" + servicePath: "." + pyFile: "manage" + port: "8013" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + django_elevue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "django_elevue" + containerName: "django_elevue" + packageName: "django_elevue.tar.gz" + servicePath: "evui" + port: "8001" + deployServer: "servers[0]" + django_antdvue: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "django_antdvue" + packageName: "django_antdvue" + servicePath: "." + pyFile: "manage" + port: "8016" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + django_antdvue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "django_antdvue" + containerName: "django_antdvue" + packageName: "django_antdvue.tar.gz" + servicePath: "avui" + port: "8001" + deployServer: "servers[0]" + flask_layui: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "flask_layui" + packageName: "flask_layui" + servicePath: "." + pyFile: "app" + port: "8020" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + flask_elevue: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "flask_elevue" + packageName: "flask_elevue" + servicePath: "." + pyFile: "app" + port: "8023" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + flask_elevue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "flask_elevue" + containerName: "flask_elevue" + packageName: "flask_elevue.tar.gz" + servicePath: "evui" + port: "8001" + deployServer: "servers[0]" + flask_antdvue: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "flask_antdvue" + packageName: "flask_antdvue" + servicePath: "." + pyFile: "app" + port: "8026" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + flask_antdvue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "flask_antdvue" + containerName: "flask_antdvue" + packageName: "flask_antdvue.tar.gz" + servicePath: "avui" + port: "8001" + deployServer: "servers[0]" + fastapi_layui: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "fastapi_layui" + packageName: "fastapi_layui" + servicePath: "." + pyFile: "main" + port: "8030" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + fastapi_elevue: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "fastapi_elevue" + packageName: "fastapi_elevue" + servicePath: "." + pyFile: "main" + port: "8033" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + fastapi_elevue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "fastapi_elevue" + containerName: "fastapi_elevue" + packageName: "fastapi_elevue.tar.gz" + servicePath: "evui" + port: "8001" + deployServer: "servers[0]" + fastapi_antdvue: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "fastapi_antdvue" + packageName: "fastapi_antdvue" + servicePath: "." + pyFile: "main" + port: "8036" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + fastapi_antdvue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "fastapi_antdvue" + containerName: "fastapi_antdvue" + packageName: "fastapi_antdvue.tar.gz" + servicePath: "avui" + port: "8001" + deployServer: "servers[0]" + tornado_layui: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "tornado_layui" + packageName: "tornado_layui" + servicePath: "." + pyFile: "app" + port: "8040" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + tornado_elevue: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "tornado_elevue" + packageName: "tornado_elevue" + servicePath: "." + pyFile: "app" + port: "8043" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + tornado_elevue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "tornado_elevue" + containerName: "tornado_elevue" + packageName: "tornado_elevue.tar.gz" + servicePath: "evui" + port: "8001" + deployServer: "servers[0]" + tornado_antdvue: + programLang: "python" + programLangVersion: "3.9.13" + containerName: "tornado_antdvue" + packageName: "tornado_antdvue" + servicePath: "." + pyFile: "app" + port: "8046" + deployServer: "servers[0]" + composeFile: "python-docker-compose" + tornado_antdvue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "tornado_antdvue" + containerName: "tornado_antdvue" + packageName: "tornado_antdvue.tar.gz" + servicePath: "avui" + port: "8001" + deployServer: "servers[0]" + + \ No newline at end of file diff --git a/config-file/imagesConfig.yml b/config-file/dockerConfig.yml similarity index 100% rename from config-file/imagesConfig.yml rename to config-file/dockerConfig.yml diff --git a/config-file/easygoadminConfig.yml b/config-file/easygoadminConfig.yml new file mode 100644 index 0000000..1171534 --- /dev/null +++ b/config-file/easygoadminConfig.yml @@ -0,0 +1,661 @@ +# ============================================================================== +# 通用配置块 - 包含所有环境共享的配置项 +# ============================================================================== +common: + # 镜像仓库配置 - 定义不同的容器镜像仓库 + registrys: + # 默认仓库配置 - 内部私有仓库 + default: + # 内部私有仓库地址 - 企业内部部署的Harbor或Registry地址 + registry: "192.168.10.102:8001" + # Jenkins凭证ID - 用于仓库认证的凭据ID + registryCredential: "xiaomayi-hub-credentials" + # 仓库中的项目/命名空间名称 - 镜像存放的项目空间 + registryProject: "xiaomayi" + # 仓库类型 - 仓库的技术类型(harbor、acr、dockerhub等) + registryType: "harbor" + # 应用部署基础镜像 + registryImage: "go:1.25.1-rocky8-dos" + + # 阿里云ACR仓库配置 - 云上仓库,用于生产环境或特定场景 + aliyun: + # 阿里云VPC内网地址 - 阿里云容器镜像服务的VPC内网地址,网络性能更优 + registry: "registry-vpc.cn-hangzhou.aliyuncs.com" + # 阿里云仓库认证凭证 - 阿里云访问凭据的Jenkins ID + registryCredential: "aliyun-hub-credentials" + # 阿里云仓库项目名称 - 阿里云ACR中的命名空间 + registryProject: "xiaomayi-base" + # 仓库类型 - 阿里云容器镜像服务 + registryType: "acr" + # 应用部署基础镜像 + registryImage: "go:1.25.1-rocky8-dos" + # Docker Hub配置 - 官方Docker仓库,用于公开镜像 + dockerhub: + # Docker Hub地址 - 官方Docker仓库地址 + registry: "index.docker.io" + # Docker Hub认证凭证 - Docker Hub账号的Jenkins凭据ID + registryCredential: "dockerhub-credentials" + # Docker Hub项目名称 - 用户名或组织名 + registryProject: "xiaomayi-base" + # 仓库类型 - 官方Docker仓库 + registryType: "dockerhub" + # 应用部署基础镜像 + registryImage: "go:1.25.1-rocky8-dos" + + # 钉钉消息 + dingtalk: + # 凭证ID - Jenkins中存储的DingTalk认证凭据ID + credentialsId: "jenkins-dingtalk-robot" + + # 通知配置 - 构建结果通知设置 + notification: + # 构建成功通知配置 + success: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 短信通知 + #sms: ["15295504151"] + # 钉钉通知 + dingtalk: true + # Slack通知 + slack: false + # 构建失败通知配置 + failure: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 短信通知 + # sms: ["15295504151"] + # 钉钉通知 + dingtalk: true + # Slack通知 + slack: false + # 构建被中止通知 + aborted: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 短信通知 + #sms: ["15295504151"] + # 钉钉通知 + dingtalk: true + # Slack通知 + slack: false + # 构建不稳定通知配置 + unstable: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 钉钉通知 + dingtalk: true + + # 构建策略 - 构建过程的策略配置 + buildStrategy: + retryCount: 3 # 构建失败重试次数 + timeoutMinutes: 60 # 构建超时时间(分钟) + cleanupWorkspace: true # 构建完成后是否清理工作空间 + enableCaching: true # 是否启用Docker构建缓存 + + # 部署相关配置 + deployScript: "deploy_env.sh" # 部署执行的shell脚本文件名 + deployPath: "/opt/apps" # 目标服务器上的应用部署根路径 + + # ============================================================================== + # 短信服务配置 + # 描述: 定义短信通知服务的相关配置,支持多种短信服务商和模板配置 + # ============================================================================== + + # 短信服务提供商配置 + sms: + # 短信服务商 - 指定使用的短信服务平台 + # 可选值: + # - 'aliyun': 阿里云短信服务(推荐) + # - 'tencent': 腾讯云短信服务 + # - 'yunpian': 云片短信服务 + provider: 'aliyun' + + # Jenkins凭据ID - 存储短信服务认证信息的Jenkins凭据标识 + # 凭据内容格式建议为JSON或key=value格式,包含accessKeyId/accessKeySecret等认证信息 + credentialsId: 'jenkins-aliyun-credentials' + + # 默认短信签名 - 在短信开头显示的签名内容 + # 需要先在短信服务平台申请并通过审核的签名 + signName: '小蚂蚁云' + + # ============================================================================== + # 短信模板配置 - 定义不同场景下的短信模板 + # 每个模板需要先在短信服务平台创建并通过审核 + # ============================================================================== + templates: + # -------------------------------------------------------------------------- + # 构建成功短信模板配置 + # 用途: 当构建任务成功完成时发送的通知短信 + # -------------------------------------------------------------------------- + build_success: + # 模板代码 - 短信服务平台审核通过的模板ID + # 阿里云: SMS_开头的一串数字字母组合 + # 腾讯云: 纯数字模板ID + # 云片: 长整型数字模板ID + templateCode: 'SMS_231440070' + + # 模板签名 - 可覆盖默认签名,使用特定的签名 + # 如果未设置,则使用顶层的默认签名 + signName: '小蚂蚁云' + + # 模板变量说明(在短信平台配置时定义): + # 通常包含: project, branch, status, duration, time 等变量 + # 示例模板内容: "您的项目${project}构建${status},耗时${duration},时间${time}" + + # -------------------------------------------------------------------------- + # 构建失败短信模板配置 + # 用途: 当构建任务失败时发送的告警短信 + # -------------------------------------------------------------------------- + build_failure: + # 模板代码 - 失败通知的专用模板ID + templateCode: 'SMS_231440070' + + # 模板签名 - 失败通知使用的签名 + signName: '小蚂蚁云' + + # 模板变量说明: + # 通常包含: project, branch, status, duration, error, time 等变量 + # 示例模板内容: "警告:项目${project}构建${status},错误:${error},时间${time}" + + # -------------------------------------------------------------------------- + # 部署通知短信模板(示例配置,可根据需要启用) + # 用途: 当应用部署完成时发送的通知短信 + # -------------------------------------------------------------------------- + # deployment: + # templateCode: 'SMS_DEPLOY_001' + # signName: '小蚂蚁云' + + # -------------------------------------------------------------------------- + # 系统告警短信模板(示例配置,可根据需要启用) + # 用途: 当系统发生异常或达到告警阈值时发送的短信 + # -------------------------------------------------------------------------- + # alert: + # templateCode: 'SMS_ALERT_001' + # signName: '小蚂蚁云' + + # 环境配置文件 - 定义不同环境的特定配置 + profiles: + # -------------------------------------------------------------------------- + # 开发环境配置 - 用于开发测试,部署频率高,配置相对宽松 + # -------------------------------------------------------------------------- + dev: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.110" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S110服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.110" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S202服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + TZ: "Asia/Shanghai" # 时区设置:亚洲/上海 + + # 部署策略配置 + deploymentStrategy: "rolling" # 部署策略:rolling-滚动部署 + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 2 # 最大并行部署服务器数量 + retryAttempts: 3 # 部署失败重试次数 + + # 健康检查配置 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # -------------------------------------------------------------------------- + # 测试环境配置 - 用于集成测试,配置接近生产环境 + # -------------------------------------------------------------------------- + test: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.110" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S110服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.110" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S110服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + TZ: "Asia/Shanghai" + + # 部署策略配置 + deploymentStrategy: "rolling" + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 1 # 测试环境串行部署,便于问题排查 + retryAttempts: 2 + + # 健康检查配置 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # -------------------------------------------------------------------------- + # 用户验收测试环境配置 - 模拟生产环境,用于最终验收测试 + # -------------------------------------------------------------------------- + uat: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.110" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S110服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.110" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S110服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + TZ: "Asia/Shanghai" + + # 部署策略配置 + deploymentStrategy: "blue-green" # 蓝绿部署策略,减少停机时间 + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 1 + retryAttempts: 1 # UAT环境不重试,立即反馈问题 + + # 健康检查配置 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # -------------------------------------------------------------------------- + # 生产环境配置 - 线上真实环境,配置最为严格 + # -------------------------------------------------------------------------- + prod: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.110" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S210服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.110" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S220服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + TZ: "Asia/Shanghai" + + # 部署策略配置 + deploymentStrategy: "canary" # 金丝雀部署策略,逐步发布降低风险 + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 1 # 生产环境单台串行部署,确保稳定性 + retryAttempts: 3 # 部署失败重试次数 + canaryPercentage: 25 # 首批金丝雀发布比例(25%) + + # 健康检查配置 + healthCheckEnabled: true # 启用健康检查 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckRetries: 5 # 健康检查5次重试 + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # 回滚配置 + rollbackEnabled: true # 启用自动回滚 + rollbackOnFailure: true # 部署失败时自动回滚 + rollbackTimeout: 300 # 回滚操作超时时间(300秒=5分钟) + +# ============================================================================== +# 分支构建配置 - 定义不同Git分支的构建参数 +# ============================================================================== +branchConfig: + # 开发分支配置 + dev: + # Jenkins代理 + jenkinsAgent: "S204-docker" + # Docker镜像构建配置 + docker: + dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 + buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 + + # 测试分支配置 + test: + # Jenkins代理 + jenkinsAgent: "S204-docker" + # Docker镜像构建配置 + docker: + dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 + buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 + + # 主分支配置(生产环境) + master: + # Jenkins代理 + jenkinsAgent: "S204-docker" + # Docker镜像构建配置 + docker: + dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 + buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 + + +# ============================================================================== +# 服务配置 - 定义每个微服务的特定配置 +# ============================================================================== +serviceConfig: + gin_layui2: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "gin_layui2" + packageName: "gin_layui2" + servicePath: "." + mainFile: "main.go" + goFile: "gin_layui2" + port: "8010" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + gin_elevue: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "gin_elevue" + packageName: "gin_elevue" + servicePath: "." + mainFile: "main.go" + goFile: "gin_elevue" + port: "8013" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + gin_elevue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "gin_elevue" + containerName: "gin_elevue" + packageName: "gin_elevue.tar.gz" + servicePath: "evui" + port: "8001" + deployServer: "servers[0]" + gin_antdvue: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "gin_antdvue" + packageName: "gin_antdvue" + servicePath: "." + mainFile: "main.go" + goFile: "gin_antdvue" + port: "8016" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + gin_antdvue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "gin_antdvue" + containerName: "gin_antdvue" + packageName: "gin_antdvue.tar.gz" + servicePath: "avui" + port: "8001" + deployServer: "servers[0]" + goframe_layui: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "goframe_layui" + packageName: "goframe_layui" + servicePath: "." + mainFile: "main.go" + goFile: "goframe_layui" + port: "8020" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + goframe_elevue: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "goframe_elevue" + packageName: "goframe_elevue" + servicePath: "." + mainFile: "main.go" + goFile: "goframe_elevue" + port: "8023" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + goframe_elevue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "goframe_elevue" + containerName: "goframe_elevue" + packageName: "goframe_elevue.tar.gz" + servicePath: "evui" + port: "8001" + deployServer: "servers[0]" + goframe_antdvue: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "goframe_antdvue" + packageName: "goframe_antdvue" + servicePath: "." + mainFile: "main.go" + goFile: "goframe_antdvue" + port: "8026" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + goframe_antdvue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "goframe_antdvue" + containerName: "goframe_antdvue" + packageName: "goframe_antdvue.tar.gz" + servicePath: "avui" + port: "8001" + deployServer: "servers[0]" + beego_layui: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "beego_layui" + packageName: "beego_layui" + servicePath: "." + mainFile: "main.go" + goFile: "beego_layui" + port: "8030" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + beego_elevue: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "beego_elevue" + packageName: "beego_elevue" + servicePath: "." + mainFile: "main.go" + goFile: "beego_elevue" + port: "8033" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + beego_elevue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "beego_elevue" + containerName: "beego_elevue" + packageName: "beego_elevue.tar.gz" + servicePath: "evui" + port: "8001" + deployServer: "servers[0]" + beego_antdvue: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "beego_antdvue" + packageName: "beego_antdvue" + servicePath: "." + mainFile: "main.go" + goFile: "beego_antdvue" + port: "8036" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + beego_antdvue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "beego_antdvue" + containerName: "beego_antdvue" + packageName: "beego_antdvue.tar.gz" + servicePath: "avui" + port: "8001" + deployServer: "servers[0]" + iris_layui: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "iris_layui" + packageName: "iris_layui" + servicePath: "." + mainFile: "main.go" + goFile: "iris_layui" + port: "8040" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + iris_elevue: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "iris_elevue" + packageName: "iris_elevue" + servicePath: "." + mainFile: "main.go" + goFile: "iris_elevue" + port: "8043" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + iris_elevue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "iris_elevue" + containerName: "iris_elevue" + packageName: "iris_elevue.tar.gz" + servicePath: "evui" + port: "8001" + deployServer: "servers[0]" + iris_antdvue: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "iris_antdvue" + packageName: "iris_antdvue" + servicePath: "." + mainFile: "main.go" + goFile: "iris_antdvue" + port: "8046" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + iris_antdvue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "iris_antdvue" + containerName: "iris_antdvue" + packageName: "iris_antdvue.tar.gz" + servicePath: "avui" + port: "8001" + deployServer: "servers[0]" + echo_layui: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "echo_layui" + packageName: "echo_layui" + servicePath: "." + mainFile: "main.go" + goFile: "echo_layui" + port: "8050" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + echo_elevue: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "echo_elevue" + packageName: "echo_elevue" + servicePath: "." + mainFile: "main.go" + goFile: "echo_elevue" + port: "8053" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + echo_elevue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "echo_elevue" + containerName: "echo_elevue" + packageName: "echo_elevue.tar.gz" + servicePath: "evui" + port: "8001" + deployServer: "servers[0]" + echo_antdvue: + programLang: "go" + programLangVersion: "1.25.1" + containerName: "echo_antdvue" + packageName: "echo_antdvue" + servicePath: "." + mainFile: "main.go" + goFile: "echo_antdvue" + port: "8056" + deployServer: "servers[0]" + composeFile: "golang-docker-compose" + echo_antdvue_ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "echo_antdvue" + containerName: "echo_antdvue" + packageName: "echo_antdvue.tar.gz" + servicePath: "avui" + port: "8001" + deployServer: "servers[0]" + + \ No newline at end of file diff --git a/config-file/nexusConfig.yml b/config-file/nexusConfig.yml new file mode 100644 index 0000000..6e98ef9 --- /dev/null +++ b/config-file/nexusConfig.yml @@ -0,0 +1,240 @@ +# ============================================================================== +# Nexus私库上传配置 - 核心类库JAR包发布配置 +# 用途: 用于配置小蚂蚁核心类库的编译、打包和发布到Nexus私库的流程 +# ============================================================================== + +# ============================================================================== +# 通用配置块 - 包含所有环境共享的配置项 +# ============================================================================== +common: + # Nexus仓库配置 - 定义不同的Maven仓库地址和认证信息 + nexus: + # 默认Nexus仓库配置 - 内部私有仓库(主要使用) + default: + # Nexus仓库地址 - 企业内部部署的Nexus地址 + url: "http://192.168.10.102:8081/repository/maven-releases/" + # Snapshots仓库地址 - 用于开发阶段的快照版本 + snapshotsUrl: "http://192.168.10.102:8081/repository/maven-snapshots/" + # Jenkins凭证ID - 用于Nexus认证的凭据ID(用户名/密码或API Token) + credentialsId: "nexus-credentials" + # 仓库类型 - Nexus仓库 + type: "nexus" + # 仓库策略 - 发布版本使用releases,快照版本使用snapshots + policy: "releases" + + # 阿里云Maven仓库配置 - 备用仓库(可根据需要启用) + aliyun: + # 阿里云Maven仓库地址 - 云上Maven仓库 + url: "https://packages.aliyun.com/maven/repository/xiaomayi-release/" + # Snapshots仓库地址 - 云上快照仓库 + snapshotsUrl: "https://packages.aliyun.com/maven/repository/xiaomayi-snapshot/" + # 阿里云仓库认证凭证 - 阿里云访问凭据 + credentialsId: "aliyun-maven-credentials" + # 仓库类型 - 阿里云Maven仓库 + type: "aliyun" + # 仓库策略 - 发布策略 + policy: "releases" + + # 钉钉消息配置 - 用于构建和发布状态通知 + dingtalk: + # 凭证ID - Jenkins中存储的DingTalk认证凭据ID + credentialsId: "jenkins-dingtalk-robot" + # 通知群组 - 接收通知的钉钉群组 + groups: ["核心库发布通知群"] + + # 通知配置 - 构建结果通知设置 + notification: + # 构建成功通知配置 - 发布成功时发送通知 + success: + # 通知渠道配置 + channels: + # 邮件通知 - 接收邮件的地址列表 + email: ["xiaomayicloud@163.com"] + # 短信通知 - 接收短信的手机号列表(注释状态,可根据需要启用) + # sms: ["15295504151"] + # 钉钉通知 - 是否启用钉钉通知 + dingtalk: true + # Slack通知 - 是否启用Slack通知(目前未启用) + slack: false + # 成功通知模板 - 通知消息内容模板 + template: "核心库 {library} 版本 {version} 发布成功!" + + # 构建失败通知配置 - 发布失败时发送告警 + failure: + # 通知渠道配置 + channels: + # 邮件通知 - 失败告警邮件接收地址 + email: ["xiaomayicloud@163.com"] + # 短信通知 - 紧急告警短信(注释状态) + # sms: ["15295504151"] + # 钉钉通知 - 启用钉钉告警 + dingtalk: true + # Slack通知 - 未启用 + slack: false + # 失败通知模板 + template: "警告:核心库 {library} 发布失败!错误信息:{error}" + + # 构建被中止通知 - 手动中止构建时发送通知 + aborted: + # 通知渠道配置 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 短信通知(注释状态) + # sms: ["15295504151"] + # 钉钉通知 + dingtalk: true + # Slack通知 - 未启用 + slack: false + # 中止通知模板 + template: "核心库 {library} 发布流程被中止" + + # 构建不稳定通知配置 - 构建完成但存在警告时发送 + unstable: + # 通知渠道配置 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 钉钉通知 + dingtalk: true + # 不稳定通知模板 + template: "注意:核心库 {library} 发布完成但存在警告" + + # 构建策略 - 构建过程的策略配置 + buildStrategy: + # 重试配置 + retryCount: 3 # 构建失败重试次数(网络问题等可重试场景) + timeoutMinutes: 60 # 构建超时时间(分钟)- 防止构建过程卡死 + cleanupWorkspace: true # 构建完成后是否清理工作空间 - 节省磁盘空间 + enableCaching: true # 是否启用Maven依赖缓存 - 加速后续构建 + + # 发布策略 - 发布到Nexus的相关配置 + publishStrategy: + # 版本管理策略 + versionPolicy: "semantic" # 版本策略:semantic-语义化版本控制 + # 自动发布设置 + autoPublish: true # 是否自动发布(false时需要人工确认) + # 签名配置 + signArtifacts: true # 是否对构件进行GPG签名 + gpgKeyId: "xiaomayi-signing-key" # GPG签名密钥ID + + # ============================================================================== + # 环境特定配置 - 不同环境的差异化配置 + # ============================================================================== + profiles: + # 开发环境配置 - 用于开发阶段的持续集成 + dev: + # Nexus仓库配置 - 使用默认Nexus仓库 + nexus: "default" + # 版本后缀 - 开发环境使用SNAPSHOT版本标识 + versionSuffix: "-SNAPSHOT" + # 自动发布设置 - 开发环境自动发布到Snapshots仓库 + autoDeploy: true + # 仓库策略 - 发布到Snapshots仓库 + repositoryPolicy: "snapshots" + + # 测试环境配置 - 用于测试验证 + test: + # Nexus仓库配置 + nexus: "default" + # 版本后缀 - 测试环境也可使用SNAPSHOT版本,便于迭代测试 + versionSuffix: "-SNAPSHOT" + # 自动发布设置 - 测试环境自动发布 + autoDeploy: true + # 仓库策略 - 发布到Snapshots仓库 + repositoryPolicy: "snapshots" + + # UAT环境配置 - 用户验收测试环境 + uat: + # Nexus仓库配置 + nexus: "default" + # 版本后缀 - UAT环境使用正式版本,但不一定立即发布到Release + versionSuffix: "-RC" # Release Candidate版本 + # 自动发布设置 - UAT环境需要人工确认 + autoDeploy: false + # 仓库策略 - 可发布到Staging仓库 + repositoryPolicy: "staging" + + # 生产环境配置 - 正式发布环境 + prod: + # Nexus仓库配置 + nexus: "default" + # 版本后缀 - 生产环境使用正式版本,无后缀 + versionSuffix: "" + # 自动发布设置 - 生产环境必须人工确认 + autoDeploy: false + # 仓库策略 - 发布到Releases仓库 + repositoryPolicy: "releases" + +# ============================================================================== +# 分支构建配置 - 定义不同Git分支的构建参数 +# ============================================================================== +branchConfig: + # 开发分支配置 - 对应开发环境 + dev: + # Jenkins代理节点 - 执行构建的Jenkins节点 + jenkinsAgent: "S205-docker" + # Maven构建配置 - Java应用编译和打包 + maven: + mavenSet: "nexus-maven-dev" # Maven配置集名称(settings.xml) + skipTests: false # 是否跳过测试(开发分支不跳过) + goals: "clean deploy" # Maven执行目标:清理、部署到Nexus + options: "-DskipITs" # Maven选项参数:跳过集成测试 + # 发布配置 + deploy: true # 是否执行部署操作 + updateVersion: true # 是否更新版本号 + + # 测试分支配置 - 对应测试环境 + test: + # Jenkins代理节点 + jenkinsAgent: "S205-docker" + # Maven构建配置 + maven: + mavenSet: "nexus-maven-test" # 测试环境Maven配置 + skipTests: false # 不跳过测试,确保质量 + goals: "clean deploy" # 执行清理和部署 + options: "-Ptest" # 激活test profile + # 发布配置 + deploy: true # 执行部署 + updateVersion: false # 不自动更新版本号 + + # 主分支配置(生产环境) - 对应生产发布 + master: + # Jenkins代理节点 + jenkinsAgent: "S205-docker" + # Maven构建配置 + maven: + mavenSet: "maven-yunhengv4-host-dev" # 生产环境Maven配置 + skipTests: false # 生产构建不跳过测试,确保稳定性 + goals: "clean deploy" # 执行清理和部署 + options: "-Prelease" # 激活release profile + # 发布配置 + deploy: true # 执行部署 + updateVersion: false # 版本号由人工管理 + +# ============================================================================== +# 核心库服务配置 - 定义需要发布的核心类库项目 +# ============================================================================== +serviceConfig: + # 核心类库 + xiaomayi-common: + # 项目基本信息 + projectName: "xiaomayi-common" # 项目名称 + description: "小蚂蚁通用工具库" # 项目描述 + # 技术栈配置 + programLang: "java" # 编程语言:Java + programLangVersion: "17.0.16" # Java版本:17.0.16 + # 项目结构配置 + pomFilePath: "pom.xml" # POM文件路径(根目录) + servicePath: "" # 服务路径(空表示根目录) + # 核心类库 + yunheng-common: + # 项目基本信息 + projectName: "yunheng-common" # 项目名称 + description: "云恒通用工具库" # 项目描述 + # 技术栈配置 + programLang: "java" # 编程语言:Java + programLangVersion: "17.0.16" # Java版本:17.0.16 + # 项目结构配置 + pomFilePath: "pom.xml" # POM文件路径(根目录) + servicePath: "" # 服务路径(空表示根目录) \ No newline at end of file diff --git a/config-file/xiaomayiConfig.yml b/config-file/xiaomayiConfig.yml index 65991bf..f58dfda 100644 --- a/config-file/xiaomayiConfig.yml +++ b/config-file/xiaomayiConfig.yml @@ -445,7 +445,7 @@ serviceConfig: port: "8081" javaOpts: "-server -Xms256m -Xmx2g -Xss1m" deployServer: "servers[0]" - composeFile: "docker-compose" + composeFile: "xiaomayi-web-docker-compose" xiaomayi-admin-ui: programLang: "nodejs" programLangVersion: "22.19.0" @@ -456,7 +456,7 @@ serviceConfig: containerName: "xiaomayi-admin-ui" port: "8001" deployServer: "servers[0]" - composeFile: "docker-compose" + composeFile: "xiaomayi-web-docker-compose" # 前台网站 xiaomayi-web: programLang: "java" @@ -468,4 +468,4 @@ serviceConfig: port: "8082" javaOpts: "-server -Xms256m -Xmx2g -Xss1m" deployServer: "servers[0]" - composeFile: "docker-compose" \ No newline at end of file + composeFile: "xiaomayi-web-docker-compose" \ No newline at end of file diff --git a/config-file/yunhengConfig.yml b/config-file/yunhengConfig.yml new file mode 100644 index 0000000..75780cd --- /dev/null +++ b/config-file/yunhengConfig.yml @@ -0,0 +1,483 @@ +# ============================================================================== +# 通用配置块 - 包含所有环境共享的配置项 +# ============================================================================== +common: + # 镜像仓库配置 - 定义不同的容器镜像仓库 + registrys: + # 默认仓库配置 - 内部私有仓库 + default: + # 内部私有仓库地址 - 企业内部部署的Harbor或Registry地址 + registry: "192.168.10.102:8001" + # Jenkins凭证ID - 用于仓库认证的凭据ID + registryCredential: "xiaomayi-hub-credentials" + # 仓库中的项目/命名空间名称 - 镜像存放的项目空间 + registryProject: "xiaomayi" + # 仓库类型 - 仓库的技术类型(harbor、acr、dockerhub等) + registryType: "harbor" + # 应用部署基础镜像 + registryImage: "jdk:17.0.16-ubuntu22-dos" + + # 阿里云ACR仓库配置 - 云上仓库,用于生产环境或特定场景 + aliyun: + # 阿里云VPC内网地址 - 阿里云容器镜像服务的VPC内网地址,网络性能更优 + registry: "registry-vpc.cn-hangzhou.aliyuncs.com" + # 阿里云仓库认证凭证 - 阿里云访问凭据的Jenkins ID + registryCredential: "aliyun-hub-credentials" + # 阿里云仓库项目名称 - 阿里云ACR中的命名空间 + registryProject: "xiaomayi-base" + # 仓库类型 - 阿里云容器镜像服务 + registryType: "acr" + # 应用部署基础镜像 + registryImage: "jdk:17.0.16-ubuntu22-dos" + # Docker Hub配置 - 官方Docker仓库,用于公开镜像 + dockerhub: + # Docker Hub地址 - 官方Docker仓库地址 + registry: "index.docker.io" + # Docker Hub认证凭证 - Docker Hub账号的Jenkins凭据ID + registryCredential: "dockerhub-credentials" + # Docker Hub项目名称 - 用户名或组织名 + registryProject: "xiaomayi-base" + # 仓库类型 - 官方Docker仓库 + registryType: "dockerhub" + # 应用部署基础镜像 + registryImage: "jdk:17.0.16-ubuntu22-dos" + + # 钉钉消息 + dingtalk: + # 凭证ID - Jenkins中存储的DingTalk认证凭据ID + credentialsId: "jenkins-dingtalk-robot" + + # 通知配置 - 构建结果通知设置 + notification: + # 构建成功通知配置 + success: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 短信通知 + #sms: ["15295504151"] + # 钉钉通知 + dingtalk: true + # Slack通知 + slack: false + # 构建失败通知配置 + failure: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 短信通知 + # sms: ["15295504151"] + # 钉钉通知 + dingtalk: true + # Slack通知 + slack: false + # 构建被中止通知 + aborted: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 短信通知 + #sms: ["15295504151"] + # 钉钉通知 + dingtalk: true + # Slack通知 + slack: false + # 构建不稳定通知配置 + unstable: + # 通知渠道 + channels: + # 邮件通知 + email: ["xiaomayicloud@163.com"] + # 钉钉通知 + dingtalk: true + + # 构建策略 - 构建过程的策略配置 + buildStrategy: + retryCount: 3 # 构建失败重试次数 + timeoutMinutes: 60 # 构建超时时间(分钟) + cleanupWorkspace: true # 构建完成后是否清理工作空间 + enableCaching: true # 是否启用Docker构建缓存 + + # 部署相关配置 + deployScript: "deploy_env.sh" # 部署执行的shell脚本文件名 + deployPath: "/usr/local/docker/yunheng-web" # 目标服务器上的应用部署根路径 + + # ============================================================================== + # 短信服务配置 + # 描述: 定义短信通知服务的相关配置,支持多种短信服务商和模板配置 + # ============================================================================== + + # 短信服务提供商配置 + sms: + # 短信服务商 - 指定使用的短信服务平台 + # 可选值: + # - 'aliyun': 阿里云短信服务(推荐) + # - 'tencent': 腾讯云短信服务 + # - 'yunpian': 云片短信服务 + provider: 'aliyun' + + # Jenkins凭据ID - 存储短信服务认证信息的Jenkins凭据标识 + # 凭据内容格式建议为JSON或key=value格式,包含accessKeyId/accessKeySecret等认证信息 + credentialsId: 'jenkins-aliyun-credentials' + + # 默认短信签名 - 在短信开头显示的签名内容 + # 需要先在短信服务平台申请并通过审核的签名 + signName: '小蚂蚁云' + + # ============================================================================== + # 短信模板配置 - 定义不同场景下的短信模板 + # 每个模板需要先在短信服务平台创建并通过审核 + # ============================================================================== + templates: + # -------------------------------------------------------------------------- + # 构建成功短信模板配置 + # 用途: 当构建任务成功完成时发送的通知短信 + # -------------------------------------------------------------------------- + build_success: + # 模板代码 - 短信服务平台审核通过的模板ID + # 阿里云: SMS_开头的一串数字字母组合 + # 腾讯云: 纯数字模板ID + # 云片: 长整型数字模板ID + templateCode: 'SMS_231440070' + + # 模板签名 - 可覆盖默认签名,使用特定的签名 + # 如果未设置,则使用顶层的默认签名 + signName: '小蚂蚁云' + + # 模板变量说明(在短信平台配置时定义): + # 通常包含: project, branch, status, duration, time 等变量 + # 示例模板内容: "您的项目${project}构建${status},耗时${duration},时间${time}" + + # -------------------------------------------------------------------------- + # 构建失败短信模板配置 + # 用途: 当构建任务失败时发送的告警短信 + # -------------------------------------------------------------------------- + build_failure: + # 模板代码 - 失败通知的专用模板ID + templateCode: 'SMS_231440070' + + # 模板签名 - 失败通知使用的签名 + signName: '小蚂蚁云' + + # 模板变量说明: + # 通常包含: project, branch, status, duration, error, time 等变量 + # 示例模板内容: "警告:项目${project}构建${status},错误:${error},时间${time}" + + # -------------------------------------------------------------------------- + # 部署通知短信模板(示例配置,可根据需要启用) + # 用途: 当应用部署完成时发送的通知短信 + # -------------------------------------------------------------------------- + # deployment: + # templateCode: 'SMS_DEPLOY_001' + # signName: '小蚂蚁云' + + # -------------------------------------------------------------------------- + # 系统告警短信模板(示例配置,可根据需要启用) + # 用途: 当系统发生异常或达到告警阈值时发送的短信 + # -------------------------------------------------------------------------- + # alert: + # templateCode: 'SMS_ALERT_001' + # signName: '小蚂蚁云' + + # 环境配置文件 - 定义不同环境的特定配置 + profiles: + # -------------------------------------------------------------------------- + # 开发环境配置 - 用于开发测试,部署频率高,配置相对宽松 + # -------------------------------------------------------------------------- + dev: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.201" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S201服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.202" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S202服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + SPRING_PROFILES_ACTIVE: "dev" # Spring Boot激活的配置文件环境 + JAVA_OPTS: "-Xms512m -Xmx512m" # JVM内存参数:初始堆512MB,最大堆512MB + LOG_LEVEL: "INFO" # 日志级别:INFO + TZ: "Asia/Shanghai" # 时区设置:亚洲/上海 + + # 部署策略配置 + deploymentStrategy: "rolling" # 部署策略:rolling-滚动部署 + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 2 # 最大并行部署服务器数量 + retryAttempts: 3 # 部署失败重试次数 + + # 健康检查配置 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # -------------------------------------------------------------------------- + # 测试环境配置 - 用于集成测试,配置接近生产环境 + # -------------------------------------------------------------------------- + test: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.201" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S201服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.202" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S201服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + SPRING_PROFILES_ACTIVE: "test" # 测试环境配置文件 + JAVA_OPTS: "-Xms1g -Xmx1g" # JVM内存:1GB堆内存 + LOG_LEVEL: "INFO" + TZ: "Asia/Shanghai" + + # 部署策略配置 + deploymentStrategy: "rolling" + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 1 # 测试环境串行部署,便于问题排查 + retryAttempts: 2 + + # 健康检查配置 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # -------------------------------------------------------------------------- + # 用户验收测试环境配置 - 模拟生产环境,用于最终验收测试 + # -------------------------------------------------------------------------- + uat: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@192.168.10.201" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S201服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@192.168.10.202" # 服务器SSH连接地址(用户名@IP) + serverPort: 22 # SSH端口号 + serverName: "S201服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + SPRING_PROFILES_ACTIVE: "uat" # UAT环境配置文件 + JAVA_OPTS: "-Xms2g -Xmx2g" # JVM内存:2GB堆内存 + LOG_LEVEL: "INFO" + TZ: "Asia/Shanghai" + + # 部署策略配置 + deploymentStrategy: "blue-green" # 蓝绿部署策略,减少停机时间 + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 1 + retryAttempts: 1 # UAT环境不重试,立即反馈问题 + + # 健康检查配置 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # -------------------------------------------------------------------------- + # 生产环境配置 - 线上真实环境,配置最为严格 + # -------------------------------------------------------------------------- + prod: + # 容器镜像 + registry: "default" + + # 服务器列表 - 部署目标服务器 + servers: + - serverIP: "esxi@124.222.176.210" # 服务器SSH连接地址(用户名@IP) + serverPort: 12422 # SSH端口号 + serverName: "S210服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: true # 主节点标识,优先部署 + priority: 1 # 部署优先级(数字越小优先级越高) + + - serverIP: "esxi@124.222.176.210" # 服务器SSH连接地址(用户名@IP) + serverPort: 12422 # SSH端口号 + serverName: "S220服务器" # 服务器标识名称,用于日志和通知 + sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID + weight: 50 # 负载权重(0-100),用于流量控制 + isPrimary: false # 主节点标识,优先部署 + priority: 2 # 部署优先级(数字越小优先级越高) + + # 环境变量 - 部署时注入到容器中的环境变量 + envVars: + SPRING_PROFILES_ACTIVE: "prod" # 生产环境配置文件 + JAVA_OPTS: "-Xms4g -Xmx4g" # JVM内存:4GB堆内存 + LOG_LEVEL: "WARN" # 生产环境使用WARN级别日志,减少日志量 + TZ: "Asia/Shanghai" + GC_OPTS: "-XX:+UseG1GC -XX:MaxGCPauseMillis=200" # GC调优参数:使用G1垃圾回收器 + + # 部署策略配置 + deploymentStrategy: "canary" # 金丝雀部署策略,逐步发布降低风险 + deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) + maxParallel: 1 # 生产环境单台串行部署,确保稳定性 + retryAttempts: 3 # 部署失败重试次数 + canaryPercentage: 25 # 首批金丝雀发布比例(25%) + + # 健康检查配置 + healthCheckEnabled: true # 启用健康检查 + healthCheckPath: "/actuator/health" # 健康检查端点 + healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) + healthCheckRetries: 5 # 健康检查5次重试 + healthCheckInterval: 10 # 健康检查间隔(10秒) + successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) + + # 回滚配置 + rollbackEnabled: true # 启用自动回滚 + rollbackOnFailure: true # 部署失败时自动回滚 + rollbackTimeout: 300 # 回滚操作超时时间(300秒=5分钟) + + # # 通知配置 - 生产环境部署状态通知 + # notifications: + # slackChannel: "#prod-deployments" # Slack通知频道 + # email: "xiaomayicloud@163.com" # 主要邮件通知地址 + # onSuccess: true # 成功时发送通知 + # onFailure: true # 失败时发送通知 + # onStart: true # 开始部署时发送通知 + # recipients: # 额外通知人员邮件列表 + # - "devops@xiaomayi.com" + # - "product-manager@xiaomayi.com" + +# ============================================================================== +# 分支构建配置 - 定义不同Git分支的构建参数 +# ============================================================================== +branchConfig: + # 开发分支配置 + dev: + # Jenkins代理 + jenkinsAgent: "S205-docker" + # Maven构建配置 - Java应用编译和打包 + maven: + mavenSet: "nexus-maven-dev" # Maven配置集名称 + skipTests: true # 生产构建不跳过测试 + goals: "clean package" # Maven执行目标 + options: "" # Maven选项参数 + # Docker镜像构建配置 + docker: + dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 + buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 + + # 测试分支配置 + test: + # Jenkins代理 + jenkinsAgent: "S205-docker" + # Maven构建配置 - Java应用编译和打包 + maven: + mavenSet: "nexus-maven-test" # Maven配置集名称 + skipTests: true # 生产构建不跳过测试 + goals: "clean package" # Maven执行目标 + options: "" # Maven选项参数 + # Docker镜像构建配置 + docker: + dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 + buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 + + # 主分支配置(生产环境) + master: + # Jenkins代理 + jenkinsAgent: "S205-docker" + # Maven构建配置 - Java应用编译和打包 + maven: + mavenSet: "maven-yunhengv4-host-dev" # Maven配置集名称 + skipTests: false # 生产构建不跳过测试 + goals: "clean package" # Maven执行目标 + options: "" # Maven选项参数 + # Docker镜像构建配置 + docker: + dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 + buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 + + +# ============================================================================== +# 服务配置 - 定义每个微服务的特定配置 +# ============================================================================== +serviceConfig: + # 后台系统 + xiaomayi-admin: + programLang: "java" + programLangVersion: "17.0.16" + containerName: "xiaomayi-admin" + pomFilePath: "pom.xml" + servicePath: "xiaomayi-modules/xiaomayi-admin" + jarName: "xiaomayi-admin.jar" + port: "8081" + javaOpts: "-server -Xms256m -Xmx2g -Xss1m" + deployServer: "servers[0]" + composeFile: "xiaomayi-web-docker-compose" + xiaomayi-admin-ui: + programLang: "nodejs" + programLangVersion: "22.19.0" + deployMethod: "static" + projectName: "xiaomayi-admin-ui" + packageName: "xiaomayi-admin-ui.tar.gz" + servicePath: "xiaomayi-ui" + containerName: "xiaomayi-admin-ui" + port: "8001" + deployServer: "servers[0]" + composeFile: "xiaomayi-web-docker-compose" + # 前台网站 + xiaomayi-web: + programLang: "java" + programLangVersion: "17.0.16" + containerName: "xiaomayi-web2" + pomFilePath: "pom.xml" + servicePath: "xiaomayi-modules/xiaomayi-web" + jarName: "xiaomayi-web.jar" + port: "8082" + javaOpts: "-server -Xms256m -Xmx2g -Xss1m" + deployServer: "servers[0]" + composeFile: "xiaomayi-web-docker-compose" + # 健康检查 + yunheng-monitor: + programLang: "java" + programLangVersion: "17.0.16" + containerName: "yunheng-monitor" + pomFilePath: "yunheng-visual/yunheng-monitor/pom.xml" + servicePath: "yunheng-visual/yunheng-monitor" + jarName: "yunheng-monitor.jar" + port: "8081" + javaOpts: "-server -Xms256m -Xmx2g -Xss1m" + deployServer: "servers[0]" + composeFile: "xiaomayi-web-docker-compose" \ No newline at end of file diff --git a/scripts-file/deploy_env copy.sh b/scripts-file/deploy_env copy.sh index f016857..d41ddaf 100644 --- a/scripts-file/deploy_env copy.sh +++ b/scripts-file/deploy_env copy.sh @@ -1,167 +1,99 @@ #!/bin/bash -# 设置脚本执行选项: -# -e: 遇到错误立即退出 -# -u: 遇到未定义变量报错 -# -a: 自动导出所有变量(set -a 表示自动导出,set +a 表示关闭自动导出) set -a - -# 检测操作系统类型并加载环境变量文件 -# 判断是否为 RedHat 或 Rocky Linux 系统 if [ -f /etc/redhat-release ] || [ -f /etc/rocky-release ]; then - # 在 RedHat 系系统上使用 source 命令加载 .env 环境变量文件 source ./.env -# 判断是否为 Debian/Ubuntu 系统(基于LSB标准) elif [ -f /etc/lsb-release ]; then - # 在 Debian 系系统上使用 . 命令加载 .env 环境变量文件 . ./.env else - # 不支持的操作系统提示 echo "Unsupported OS" - exit 1 # 退出脚本,返回错误码 fi - -# 关闭自动导出变量模式 set +a -# 定义变量 -schema="https://" # 协议方案,默认为HTTPS -serverName=$2 # 第二个参数:服务名称(如 xiaomayi-admin) -tag=$3 # 第三个参数:镜像标签(如 prod-31) +schema="https://" +serverName=$2 +tag=$3 -# 函数:显示脚本使用说明和描述信息 desc() { - clear # 清屏 + clear echo "===========================================================" - echo "Deploy Containter" # 脚本用途:部署容器 + echo "Deploy Containter" echo "===========================================================" - echo "version 0.1" # 脚本版本号 - echo "deploy: deploy containter" # 部署命令用法 - echo "delete: delete containter" # 删除命令用法 + echo "version 0.1" + echo "deploy: deploy containter" + echo "delete: delete containter" echo "" echo "===========================================================" - echo press any key to continue && read TEMP && echo ok.. # 等待用户按键继续 + echo press any key to continue && read TEMP && echo ok.. } -# 函数:获取指定容器的镜像名称 list_image() { - # 使用 docker inspect 命令获取容器的镜像名称 - # --format="{{.Config.Image}}" 指定输出格式为镜像名称 image_id=`docker inspect --format="{{.Config.Image}}" ${serverName}` } -# 函数:获取指定容器的进程ID(容器ID) list_process() { - # 使用 docker inspect 命令获取容器的完整ID - # --format="{{.Id}}" 指定输出格式为容器ID process_id=`docker inspect --format="{{.Id}}" ${serverName}` } -# 函数:从Docker仓库拉取镜像 +#pull镜像 pull_image() { echo "----------------" - echo "Pull Image" # 拉取镜像阶段开始 + echo "Pull Image" echo "----------------" - - # 构建完整的镜像名称 - # 格式:仓库URL/命名空间/服务名称 imageName="${DOCKER_REGISTRY_URL}/${DOCKER_REGISTRYURL_NAMESPACE}/${serverName}" - # 登录到Docker仓库(使用密码管道方式,避免密码明文出现在命令行历史中) echo "$DOCKER_PASSWORD" | docker login --username=${DOCKER_USERNAME} --password-stdin ${DOCKER_REGISTRY_URL} - - # 拉取指定标签的镜像 docker pull "${imageName}:${tag}" - echo "" # 输出空行 + echo "" } -# 函数:运行镜像(部署容器) +#运行镜像 deploy_image() { echo "----------------" - echo "Deploy Image" # 部署镜像阶段开始 + echo "Deploy Image" echo "----------------" - - # 设置版本环境变量,供docker-compose使用 export VERSION=${tag} - - # 使用docker compose启动服务(后台模式) - # -d: 后台运行容器 - # ${serverName}: 只启动指定的服务 docker compose up -d ${serverName} - echo "" # 输出空行 + echo "" } -# 函数:停止并删除容器和镜像 +#停掉容器、删除容器、删除镜像 delete_image() { echo "----------------" - echo "Delete Image" # 删除镜像阶段开始 + echo "Delete Image" echo "----------------" - - # 获取当前容器的镜像信息和进程信息 list_image list_process - - # 检查镜像是否存在 if [ "$image_id" != "" ] ; then - # 检查容器进程是否存在 if [ "$process_id" != "" ] ; then - # 停止正在运行的容器 - echo "Stopping container: $process_id" + #停掉容器 docker stop $process_id - # 删除已停止的容器 - echo "Removing container: $process_id" + #删除容器 docker rm $process_id - # 强制删除镜像(即使有依赖也强制删除) - echo "Removing image: $image_id" + #删除镜像 docker rmi --force $image_id else - # 如果容器不存在,只删除镜像 - echo "Removing image: $image_id" + #删除镜像 docker rmi --force $image_id fi - else - echo "No image found for: ${serverName}" fi - echo "" # 输出空行 + echo "" } -# 主程序:根据传入的参数执行不同的操作 + +# main program case $1 in - "deploy") # 部署操作 - echo "Starting deployment process for ${serverName}:${tag}" - pull_image # 第一步:拉取镜像 - delete_image # 第二步:删除旧容器和镜像(清理环境) - deploy_image # 第三步:部署新容器 - echo "Deployment completed for ${serverName}:${tag}" + "deploy") + pull_image + delete_image + deploy_image ;; - "delete") # 删除操作 - echo "Starting deletion process for ${serverName}" - delete_image # 删除容器和镜像 - echo "Deletion completed for ${serverName}" + "delete") + delete_image ;; - *) # 默认情况:显示帮助信息 - echo "Invalid command: $1" - desc # 显示使用说明 + *) + desc ;; esac -# 脚本结束 - -# 使用示例: -# ./deploy_env.sh deploy xiaomayi-admin prod-31 -# ./deploy_env.sh delete xiaomayi-admin -# -# 依赖文件: -# .env 文件需要包含以下环境变量: -# DOCKER_REGISTRY_URL=docker仓库地址 -# DOCKER_REGISTRYURL_NAMESPACE=命名空间 -# DOCKER_USERNAME=用户名 -# DOCKER_PASSWORD=密码 -# -# 功能说明: -# 1. 支持多操作系统环境检测 -# 2. 自动加载环境变量配置 -# 3. 提供完整的容器部署流程 -# 4. 支持容器清理和删除 -# 5. 安全的Docker仓库认证 \ No newline at end of file diff --git a/scripts-file/deploy_env.sh b/scripts-file/deploy_env.sh index bc3214b..5497707 100644 --- a/scripts-file/deploy_env.sh +++ b/scripts-file/deploy_env.sh @@ -82,6 +82,9 @@ deploy_image() { # 设置版本环境变量,供docker-compose使用 export VERSION=${tag} + export DOCKER_REGISTRY_URL=${DOCKER_REGISTRY_URL} + export DOCKER_REGISTRYURL_NAMESPACE=${DOCKER_REGISTRYURL_NAMESPACE} + export SERVER_NAME=${serverName} # 使用docker compose启动服务(后台模式) # -d: 后台运行容器 diff --git a/scripts-file/docker-env-prod.sh b/scripts-file/docker-env-prod.sh index 94c469b..4bd8bdf 100644 --- a/scripts-file/docker-env-prod.sh +++ b/scripts-file/docker-env-prod.sh @@ -1,4 +1,4 @@ -DOCKER_REGISTRY_URL="192.168.10.102:8001" +DOCKER_REGISTRY_URL="manage.harbor.djangoadmin.cn" DOCKER_REGISTRYURL_NAMESPACE="xiaomayi" DOCKER_USERNAME="deploy" DOCKER_PASSWORD="Harbor20240330" \ No newline at end of file