chore: update config for local dev and docker
All checks were successful
aiot-platform CI/CD / build-and-deploy (push) Successful in 8m26s
All checks were successful
aiot-platform CI/CD / build-and-deploy (push) Successful in 8m26s
This commit is contained in:
@@ -31,10 +31,18 @@ jobs:
|
|||||||
git clone --depth 1 "$GIT_URL" .
|
git clone --depth 1 "$GIT_URL" .
|
||||||
git log -1 --format='%h - %s'
|
git log -1 --format='%h - %s'
|
||||||
|
|
||||||
# 2. 准备 Docker 网络 (用于容器间通信)
|
# 2. 准备 Docker 网络 (使用 1Panel 默认网络)
|
||||||
- name: Create Docker Network
|
# 假设 1Panel 创建的网络名为 1panel-network
|
||||||
|
# 如果不存在,尝试创建 aiot-net (兼容模式)
|
||||||
|
- name: Setup Network
|
||||||
run: |
|
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)
|
# 3. 构建并部署主服务 (Server)
|
||||||
- name: Build & Deploy Server
|
- name: Build & Deploy Server
|
||||||
@@ -42,6 +50,14 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
IMAGE_NAME: 'aiot-server'
|
IMAGE_NAME: 'aiot-server'
|
||||||
CONTAINER_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: |
|
run: |
|
||||||
# --- 构建 ---
|
# --- 构建 ---
|
||||||
SHORT_SHA=$(git log -1 --format='%h')
|
SHORT_SHA=$(git log -1 --format='%h')
|
||||||
@@ -54,14 +70,22 @@ jobs:
|
|||||||
|
|
||||||
# --- 部署 ---
|
# --- 部署 ---
|
||||||
echo "Deploying Server..."
|
echo "Deploying Server..."
|
||||||
|
echo "Config: MySQL=$MYSQL_HOST, Redis=$REDIS_HOST, TDE=$TDENGINE_HOST, Net=$NETWORK_NAME"
|
||||||
docker stop $CONTAINER_NAME || true
|
docker stop $CONTAINER_NAME || true
|
||||||
docker rm $CONTAINER_NAME || true
|
docker rm $CONTAINER_NAME || true
|
||||||
|
|
||||||
|
# 注入环境变量,强制切换到 Docker 内网连接
|
||||||
docker run -d \
|
docker run -d \
|
||||||
--name $CONTAINER_NAME \
|
--name $CONTAINER_NAME \
|
||||||
--network aiot-net \
|
--network $NETWORK_NAME \
|
||||||
--restart always \
|
--restart always \
|
||||||
-p 48080:48080 \
|
-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"
|
"${IMAGE_NAME}:latest"
|
||||||
|
|
||||||
# 4. 构建并部署 IoT 网关 (Gateway)
|
# 4. 构建并部署 IoT 网关 (Gateway)
|
||||||
@@ -70,6 +94,9 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
IMAGE_NAME: 'aiot-gateway'
|
IMAGE_NAME: 'aiot-gateway'
|
||||||
CONTAINER_NAME: aiot-gateway
|
CONTAINER_NAME: aiot-gateway
|
||||||
|
# 使用 1Panel 管理的实际容器名
|
||||||
|
MYSQL_HOST: '1Panel-mysql-28oP'
|
||||||
|
REDIS_HOST: '1Panel-redis-9iYV'
|
||||||
run: |
|
run: |
|
||||||
# --- 构建 ---
|
# --- 构建 ---
|
||||||
SHORT_SHA=$(git log -1 --format='%h')
|
SHORT_SHA=$(git log -1 --format='%h')
|
||||||
@@ -86,13 +113,14 @@ jobs:
|
|||||||
docker rm $CONTAINER_NAME || true
|
docker rm $CONTAINER_NAME || true
|
||||||
|
|
||||||
# 覆盖 RPC 地址,使其指向 aiot-server 容器
|
# 覆盖 RPC 地址,使其指向 aiot-server 容器
|
||||||
# 假设 application.yaml 中配置的是 viewshanghai.iot.gateway.rpc.url
|
# 同时注入数据库和 Redis 配置
|
||||||
|
|
||||||
docker run -d \
|
docker run -d \
|
||||||
--name $CONTAINER_NAME \
|
--name $CONTAINER_NAME \
|
||||||
--network aiot-net \
|
--network $NETWORK_NAME \
|
||||||
--restart always \
|
--restart always \
|
||||||
-p 1883:1883 \
|
-p 1883:1883 \
|
||||||
-p 8092:8092 \
|
-p 8092:8092 \
|
||||||
-e VIEWSHANGHAI_IOT_GATEWAY_RPC_URL="http://aiot-server:48080" \
|
-e VIEWSHANGHAI_IOT_GATEWAY_RPC_URL="http://aiot-server:48080" \
|
||||||
|
-e MYSQL_HOST="$MYSQL_HOST" \
|
||||||
|
-e REDIS_HOST="$REDIS_HOST" \
|
||||||
"${IMAGE_NAME}:latest"
|
"${IMAGE_NAME}:latest"
|
||||||
|
|||||||
@@ -47,7 +47,9 @@ spring:
|
|||||||
primary: master
|
primary: master
|
||||||
datasource:
|
datasource:
|
||||||
master:
|
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: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:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例
|
||||||
# url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
|
# 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:dm://127.0.0.1:5236?schema=RUOYI_VUE_PRO # DM 连接的示例
|
||||||
# url: jdbc:kingbase8://127.0.0.1:54321/test # 人大金仓 KingbaseES 连接的示例
|
# url: jdbc:kingbase8://127.0.0.1:54321/test # 人大金仓 KingbaseES 连接的示例
|
||||||
# url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 连接的示例
|
# url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 连接的示例
|
||||||
username: root
|
username: ${MYSQL_USERNAME:root}
|
||||||
password: 65p^VTPi9Qd+
|
password: ${MYSQL_PASSWORD:65p^VTPi9Qd+}
|
||||||
# username: sa # SQL Server 连接的示例
|
# username: sa # SQL Server 连接的示例
|
||||||
# password: Viewshanghai@2024 # SQL Server 连接的示例
|
# password: Viewshanghai@2024 # SQL Server 连接的示例
|
||||||
# username: SYSDBA # DM 连接的示例
|
# username: SYSDBA # DM 连接的示例
|
||||||
@@ -65,24 +67,27 @@ spring:
|
|||||||
# password: Viewshanghai@2024 # OpenGauss 连接的示例
|
# password: Viewshanghai@2024 # OpenGauss 连接的示例
|
||||||
slave: # 模拟从库,可根据自己需要修改
|
slave: # 模拟从库,可根据自己需要修改
|
||||||
lazy: true # 开启懒加载,保证启动速度
|
lazy: true # 开启懒加载,保证启动速度
|
||||||
url: jdbc:mysql://124.221.55.225:3306/aiot-platform?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
|
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: root
|
username: ${MYSQL_USERNAME:root}
|
||||||
password: 65p^VTPi9Qd+
|
password: ${MYSQL_PASSWORD:65p^VTPi9Qd+}
|
||||||
tdengine: # IoT 数据库(需要 IoT 物联网再开启噢!)
|
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
|
driver-class-name: com.taosdata.jdbc.ws.WebSocketDriver
|
||||||
username: root
|
username: ${TDENGINE_USERNAME:root}
|
||||||
password: taosdata
|
password: ${TDENGINE_PASSWORD:taosdata}
|
||||||
druid:
|
druid:
|
||||||
validation-query: SELECT SERVER_STATUS() # TDengine 数据源的有效性检查 SQL
|
validation-query: SELECT SERVER_STATUS() # TDengine 数据源的有效性检查 SQL
|
||||||
|
|
||||||
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||||
|
# 默认使用服务器公网 IP (方便本地开发直连)
|
||||||
|
# CI/CD 部署时会自动注入环境变量 REDIS_HOST=aiot-redis 切换为内网连接
|
||||||
data:
|
data:
|
||||||
redis:
|
redis:
|
||||||
host: 124.221.55.225 # 地址
|
host: ${REDIS_HOST:124.221.55.225} # 地址
|
||||||
port: 6379 # 端口
|
port: ${REDIS_PORT:6379} # 端口
|
||||||
database: 0 # 数据库索引
|
database: ${REDIS_DATABASE:0} # 数据库索引
|
||||||
password: 9kHXcZ1ojFsD # 密码,建议生产环境开启
|
password: ${REDIS_PASSWORD:9kHXcZ1ojFsD} # 密码,默认无密码
|
||||||
|
|
||||||
--- #################### 定时任务相关配置 ####################
|
--- #################### 定时任务相关配置 ####################
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user