From 527b9d7d4458a9c2fceb3737e387e1cecf128321 Mon Sep 17 00:00:00 2001 From: lzh Date: Thu, 18 Dec 2025 15:10:38 +0800 Subject: [PATCH] chore: update config for local dev and docker --- .gitea/workflows/cicd.yaml | 42 +++++++++++++++---- .../src/main/resources/application-local.yaml | 31 ++++++++------ 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/.gitea/workflows/cicd.yaml b/.gitea/workflows/cicd.yaml index 36ac61e..55be878 100644 --- a/.gitea/workflows/cicd.yaml +++ b/.gitea/workflows/cicd.yaml @@ -31,10 +31,18 @@ jobs: git clone --depth 1 "$GIT_URL" . git log -1 --format='%h - %s' - # 2. 准备 Docker 网络 (用于容器间通信) - - name: Create Docker Network + # 2. 准备 Docker 网络 (使用 1Panel 默认网络) + # 假设 1Panel 创建的网络名为 1panel-network + # 如果不存在,尝试创建 aiot-net (兼容模式) + - name: Setup Network run: | - docker network create aiot-net || true + if docker network inspect 1panel-network >/dev/null 2>&1; then + echo "NETWORK_NAME=1panel-network" >> $GITHUB_ENV + else + echo "1panel-network not found, creating aiot-net..." + docker network create aiot-net || true + echo "NETWORK_NAME=aiot-net" >> $GITHUB_ENV + fi # 3. 构建并部署主服务 (Server) - name: Build & Deploy Server @@ -42,6 +50,14 @@ jobs: env: IMAGE_NAME: 'aiot-server' CONTAINER_NAME: aiot-server + # 使用 1Panel 管理的实际容器名 + MYSQL_HOST: '1Panel-mysql-28oP' + REDIS_HOST: '1Panel-redis-9iYV' + TDENGINE_HOST: '1Panel-tdengine-XGgv' + # 支持通过 Secrets 覆盖其他配置(如密码) + MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD || '65p^VTPi9Qd+' }} + REDIS_PASSWORD: ${{ secrets.REDIS_PASSWORD || '9kHXcZ1ojFsD' }} + TDENGINE_PASSWORD: ${{ secrets.TDENGINE_PASSWORD || 'taosdata' }} run: | # --- 构建 --- SHORT_SHA=$(git log -1 --format='%h') @@ -54,14 +70,22 @@ jobs: # --- 部署 --- echo "Deploying Server..." + echo "Config: MySQL=$MYSQL_HOST, Redis=$REDIS_HOST, TDE=$TDENGINE_HOST, Net=$NETWORK_NAME" docker stop $CONTAINER_NAME || true docker rm $CONTAINER_NAME || true + # 注入环境变量,强制切换到 Docker 内网连接 docker run -d \ --name $CONTAINER_NAME \ - --network aiot-net \ + --network $NETWORK_NAME \ --restart always \ -p 48080:48080 \ + -e MYSQL_HOST="$MYSQL_HOST" \ + -e MYSQL_PASSWORD="$MYSQL_PASSWORD" \ + -e REDIS_HOST="$REDIS_HOST" \ + -e TDENGINE_HOST="$TDENGINE_HOST" \ + -e TDENGINE_PASSWORD="$TDENGINE_PASSWORD" \ + $([ -n "$REDIS_PASSWORD" ] && echo "-e REDIS_PASSWORD=$REDIS_PASSWORD" || echo "") \ "${IMAGE_NAME}:latest" # 4. 构建并部署 IoT 网关 (Gateway) @@ -70,6 +94,9 @@ jobs: env: IMAGE_NAME: 'aiot-gateway' CONTAINER_NAME: aiot-gateway + # 使用 1Panel 管理的实际容器名 + MYSQL_HOST: '1Panel-mysql-28oP' + REDIS_HOST: '1Panel-redis-9iYV' run: | # --- 构建 --- SHORT_SHA=$(git log -1 --format='%h') @@ -86,13 +113,14 @@ jobs: docker rm $CONTAINER_NAME || true # 覆盖 RPC 地址,使其指向 aiot-server 容器 - # 假设 application.yaml 中配置的是 viewshanghai.iot.gateway.rpc.url - + # 同时注入数据库和 Redis 配置 docker run -d \ --name $CONTAINER_NAME \ - --network aiot-net \ + --network $NETWORK_NAME \ --restart always \ -p 1883:1883 \ -p 8092:8092 \ -e VIEWSHANGHAI_IOT_GATEWAY_RPC_URL="http://aiot-server:48080" \ + -e MYSQL_HOST="$MYSQL_HOST" \ + -e REDIS_HOST="$REDIS_HOST" \ "${IMAGE_NAME}:latest" diff --git a/viewshanghai-server/src/main/resources/application-local.yaml b/viewshanghai-server/src/main/resources/application-local.yaml index 3e15bcb..0bfb960 100644 --- a/viewshanghai-server/src/main/resources/application-local.yaml +++ b/viewshanghai-server/src/main/resources/application-local.yaml @@ -47,7 +47,9 @@ spring: primary: master datasource: master: - url: jdbc:mysql://124.221.55.225:3306/aiot-platform?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例 + # 默认使用服务器公网 IP (方便本地开发直连) + # CI/CD 部署时会自动注入环境变量 MYSQL_HOST=aiot-mysql 切换为内网连接 + url: jdbc:mysql://${MYSQL_HOST:124.221.55.225}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:aiot-platform}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例 # url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # MySQL Connector/J 5.X 连接的示例 # url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例 @@ -55,8 +57,8 @@ spring: # url: jdbc:dm://127.0.0.1:5236?schema=RUOYI_VUE_PRO # DM 连接的示例 # url: jdbc:kingbase8://127.0.0.1:54321/test # 人大金仓 KingbaseES 连接的示例 # url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 连接的示例 - username: root - password: 65p^VTPi9Qd+ + username: ${MYSQL_USERNAME:root} + password: ${MYSQL_PASSWORD:65p^VTPi9Qd+} # username: sa # SQL Server 连接的示例 # password: Viewshanghai@2024 # SQL Server 连接的示例 # username: SYSDBA # DM 连接的示例 @@ -65,24 +67,27 @@ spring: # password: Viewshanghai@2024 # OpenGauss 连接的示例 slave: # 模拟从库,可根据自己需要修改 lazy: true # 开启懒加载,保证启动速度 - url: jdbc:mysql://124.221.55.225:3306/aiot-platform?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true - username: root - password: 65p^VTPi9Qd+ + url: jdbc:mysql://${MYSQL_HOST:124.221.55.225}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:aiot-platform}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true + username: ${MYSQL_USERNAME:root} + password: ${MYSQL_PASSWORD:65p^VTPi9Qd+} tdengine: # IoT 数据库(需要 IoT 物联网再开启噢!) - url: jdbc:TAOS-WS://124.221.55.225:6041/ruoyi_vue_pro + # 本地开发走公网 IP,部署环境走内网容器名 + url: jdbc:TAOS-WS://${TDENGINE_HOST:124.221.55.225}:${TDENGINE_PORT:6041}/${TDENGINE_DATABASE:aiot_platform} driver-class-name: com.taosdata.jdbc.ws.WebSocketDriver - username: root - password: taosdata + username: ${TDENGINE_USERNAME:root} + password: ${TDENGINE_PASSWORD:taosdata} druid: validation-query: SELECT SERVER_STATUS() # TDengine 数据源的有效性检查 SQL # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 + # 默认使用服务器公网 IP (方便本地开发直连) + # CI/CD 部署时会自动注入环境变量 REDIS_HOST=aiot-redis 切换为内网连接 data: redis: - host: 124.221.55.225 # 地址 - port: 6379 # 端口 - database: 0 # 数据库索引 - password: 9kHXcZ1ojFsD # 密码,建议生产环境开启 + host: ${REDIS_HOST:124.221.55.225} # 地址 + port: ${REDIS_PORT:6379} # 端口 + database: ${REDIS_DATABASE:0} # 数据库索引 + password: ${REDIS_PASSWORD:9kHXcZ1ojFsD} # 密码,默认无密码 --- #################### 定时任务相关配置 ####################