更新manager;部署方式
This commit is contained in:
parent
c28b433aa1
commit
db03756946
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
||||
.tmp
|
||||
*.tar
|
||||
|
||||
@ -2,10 +2,12 @@ FROM dockerproxy.com/library/ubuntu:22.04
|
||||
ADD dotnet-runtime-3.1.32-linux-x64.tar.gz /root/dotnet
|
||||
COPY libssl1.0.0_1.0.2g-1ubuntu4.20_amd64.deb /tmp
|
||||
|
||||
RUN apt update;dpkg --add-architecture i386;apt update;apt install -y --no-install-recommends libstdc++6 lib32stdc++6 libc6:i386 libc6 libgcc-s1 libicu70 liblttng-ust1 zlib1g vim zip unzip wget openssh-server inetutils-ping inetutils-telnet;\
|
||||
RUN apt update;dpkg --add-architecture i386;apt update;apt install -y --no-install-recommends libstdc++6 lib32stdc++6 libc6:i386 libc6 libgcc-s1 libicu70 liblttng-ust1 zlib1g vim zip unzip wget openssh-server inetutils-ping inetutils-telnet jq;\
|
||||
dpkg -i /tmp/libssl1.0.0_1.0.2g-1ubuntu4.20_amd64.deb;\
|
||||
echo "PermitRootLogin yes\nPasswordAuthentication yes\n" >> /etc/ssh/sshd_config;\
|
||||
echo root:123456 |chpasswd
|
||||
echo root:123456 |chpasswd;\
|
||||
echo "check_certificate = off\n" >> /etc/wgetrc
|
||||
|
||||
|
||||
COPY localtime /etc
|
||||
COPY nats-server /usr/bin/
|
||||
|
||||
22
README.md
22
README.md
@ -1,11 +1,14 @@
|
||||
# 软采基础镜像
|
||||
|
||||
包含dotnet 3.1 运行时,i386 架构支持,nats-server,运行管理,可上线UIOT平台,支持部署,远程访问
|
||||
|
||||
### 编译
|
||||
`docker build -t gitiot.mgm-iot.com/iot_images/yuzhen_base:vx.x.x .`
|
||||
|
||||
`docker build -t gitiot.mgm-iot.com/iot_images/yuzhen_base:vx.x.x .`
|
||||
`docker build -t swr.cn-north-4.myhuaweicloud.com/cloud-yuzhen/yuzhen_base:vx.x.x ./`
|
||||
|
||||
### docker 运行命令
|
||||
|
||||
`docker run -d --name yzcol --restart always -v /etc/localtime:/etc/localtime gitiot.mgm-iot.com/iot_images/yuzhen_base:v1.0.4`
|
||||
|
||||
* -p 51001:51001/udp ,透传UDP端口
|
||||
@ -17,13 +20,22 @@
|
||||
* -v /etc/localtime:/etc/localtime ,保持和主机相同时区
|
||||
|
||||
### 设置自动重启
|
||||
|
||||
`docker update --restart=always ${CONTAINER}`
|
||||
|
||||
### 批量部署
|
||||
使用docker-compose
|
||||
将需要创建的网关ID 按照示例文件批量添加,同时在 yz_project.csv 中添加所有网关的配置信息
|
||||
如上两个配置修改完成后,执行 `docker-compose up -d` 即可
|
||||
|
||||
更新日志
|
||||
使用 generate_files.py 脚本,修改脚本中内容:
|
||||
|
||||
1. csv_line 内容中的平台信息
|
||||
2. START_SN 其实虚拟网关序列号
|
||||
3. COUNT 要生成的虚拟网关个数
|
||||
|
||||
执行Python脚本 python3 generate_files.py
|
||||
|
||||
同时启动过多容器,可能会导致注册异常,可使用如下Python脚本,按顺序延时启动,python3 deploy.py
|
||||
|
||||
### 更新日志
|
||||
|
||||
2024-12-10 09:52:45 factory升级v1.1.9
|
||||
2024-12-20 17:46:40 支持批量部署。
|
||||
41
deploy.py
Normal file
41
deploy.py
Normal file
@ -0,0 +1,41 @@
|
||||
import yaml
|
||||
import time
|
||||
import subprocess
|
||||
|
||||
# 配置:延时秒数
|
||||
DELAY_SECONDS = 10
|
||||
|
||||
def start_containers():
|
||||
try:
|
||||
# 1. 读取 compose 文件获取服务列表
|
||||
with open('docker-compose.yml', 'r') as f:
|
||||
compose_data = yaml.safe_load(f)
|
||||
|
||||
services = list(compose_data.get('services', {}).keys())
|
||||
|
||||
if not services:
|
||||
print("错误: 未在 docker-compose.yml 中找到任何服务。")
|
||||
return
|
||||
|
||||
print(f"检测到 {len(services)} 个服务,将按顺序启动并延时 {DELAY_SECONDS}s...")
|
||||
|
||||
# 2. 逐个启动服务
|
||||
for service in services:
|
||||
print(f"正在启动容器: {service} ...")
|
||||
# 使用 docker-compose up -d [服务名] 启动特定容器
|
||||
subprocess.run(["docker-compose", "up", "-d", service], check=True)
|
||||
|
||||
# 最后一个容器启动后不需要等待
|
||||
if service != services[-1]:
|
||||
time.sleep(DELAY_SECONDS)
|
||||
print(f"等待 {DELAY_SECONDS}s...")
|
||||
|
||||
print("\n所有容器已按序启动完成!")
|
||||
|
||||
except FileNotFoundError:
|
||||
print("错误: 当前目录下找不到 docker-compose.yml")
|
||||
except Exception as e:
|
||||
print(f"运行出错: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
start_containers()
|
||||
@ -1,12 +1,23 @@
|
||||
version: '3'
|
||||
|
||||
x-service-common: &service-common
|
||||
image: gitiot.mgm-iot.com/iot_images/yuzhen_base:v1.0.9
|
||||
image: swr.cn-north-4.myhuaweicloud.com/cloud-yuzhen/yuzhen_base:v1.0.11
|
||||
restart: always
|
||||
volumes:
|
||||
- ./yz_project.csv:/home/yz_project.csv
|
||||
|
||||
services:
|
||||
YZXHRC0125H070001:
|
||||
YZXHRAX86NN2511250011:
|
||||
<<: *service-common
|
||||
command: [ "/home/start.sh", "YZXHRC0125H070001" ]
|
||||
command: [ "/home/start.sh", "YZXHRAX86NN2511250011" ]
|
||||
YZXHRAX86NN2511250012:
|
||||
<<: *service-common
|
||||
command: [ "/home/start.sh", "YZXHRAX86NN2511250012" ]
|
||||
YZXHRAX86NN2511250013:
|
||||
<<: *service-common
|
||||
command: [ "/home/start.sh", "YZXHRAX86NN2511250013" ]
|
||||
YZXHRAX86NN2511250014:
|
||||
<<: *service-common
|
||||
command: [ "/home/start.sh", "YZXHRAX86NN2511250014" ]
|
||||
YZXHRAX86NN2511250015:
|
||||
<<: *service-common
|
||||
command: [ "/home/start.sh", "YZXHRAX86NN2511250015" ]
|
||||
71
generate_files.py
Normal file
71
generate_files.py
Normal file
@ -0,0 +1,71 @@
|
||||
import os
|
||||
|
||||
def generate_files(start_sn, count):
|
||||
# 1. 解析起始序列号 (分离前缀和最后4位数字)
|
||||
# 假设格式固定,最后4位为数字
|
||||
prefix = start_sn[:-4]
|
||||
try:
|
||||
start_num = int(start_sn[-4:])
|
||||
except ValueError:
|
||||
print("错误: 序列号最后4位必须是数字。")
|
||||
return
|
||||
|
||||
csv_filename = "yz_project.csv"
|
||||
docker_filename = "docker-compose.yml"
|
||||
|
||||
csv_content = []
|
||||
docker_services = []
|
||||
|
||||
# docker-compose 头部定义
|
||||
docker_header = """version: '3'
|
||||
x-service-common: &service-common
|
||||
image: swr.cn-north-4.myhuaweicloud.com/cloud-yuzhen/yuzhen_base:v1.0.11
|
||||
restart: always
|
||||
volumes:
|
||||
- ./yz_project.csv:/home/yz_project.csv
|
||||
|
||||
services:"""
|
||||
|
||||
print(f"正在生成 {count} 个序列号,起始于: {start_sn}...")
|
||||
|
||||
for i in range(count):
|
||||
# 计算当前数字并补零至4位 (例如: 1 -> 0001)
|
||||
current_num = start_num + i
|
||||
current_sn = f"{prefix}{current_num:04d}"
|
||||
|
||||
# --- 生成 CSV 行 ---
|
||||
# 格式: ${device_SN},Horseman-A21,H21.0.0.1,192.168.1.244,1883,mxpoty5rco1jhwde|${device_SN}|2,pykqg5qpzspfce3w,0,192.168.1.244,http://192.168.1.244/dlp/v1/device/backupAndRestore?sn=${device_SN},,
|
||||
|
||||
csv_line = (
|
||||
f"{current_sn},Horseman-A21,H21.0.0.1,192.168.1.244,1883,mxpoty5rco1jhwde|{current_sn}|2,pykqg5qpzspfce3w,0,192.168.1.244,http://192.168.1.244/dlp/v1/device/backupAndRestore?sn={current_sn}"
|
||||
)
|
||||
csv_content.append(csv_line)
|
||||
|
||||
# --- 生成 Docker Compose 服务块 ---
|
||||
# 注意 YAML 缩进
|
||||
service_block = f"""
|
||||
{current_sn}:
|
||||
<<: *service-common
|
||||
command: [ "/home/start.sh", "{current_sn}" ]"""
|
||||
docker_services.append(service_block)
|
||||
|
||||
# 2. 写入 CSV 文件
|
||||
with open(csv_filename, 'w', encoding='utf-8') as f:
|
||||
f.write("\n".join(csv_content))
|
||||
# 如果文件末尾需要换行符,取消下面注释
|
||||
# f.write("\n")
|
||||
print(f"已创建: {csv_filename}")
|
||||
|
||||
# 3. 写入 Docker Compose 文件
|
||||
with open(docker_filename, 'w', encoding='utf-8') as f:
|
||||
f.write(docker_header)
|
||||
f.write("".join(docker_services))
|
||||
print(f"已创建: {docker_filename}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
# --- 配置区域 ---
|
||||
START_SN = "YZXHRAX86NN2511250001" # 起始序列号
|
||||
COUNT = 166 # 需要生成的个数
|
||||
# ----------------
|
||||
|
||||
generate_files(START_SN, COUNT)
|
||||
7
start.sh
7
start.sh
@ -2,8 +2,13 @@
|
||||
echo "start ssh"
|
||||
service ssh start
|
||||
|
||||
echo "start set project"
|
||||
# 检查 Prod_connect.json 文件中 user 字段是否包含 $1 参数
|
||||
if jq --arg param "$1" '(.product.user | split("|") | contains([$param]))' /yuzhen_iot/prod_manage/cfg/Prod_connect.json; then
|
||||
echo "Parameter $1 found in Prod_connect.json user field. Skipping plumber execution."
|
||||
else
|
||||
echo "Parameter $1 not found in Prod_connect.json user field. Starting plumber..."
|
||||
/yuzhen_iot/prod_manage/app/plumber -project /home/yz_project.csv -S $1
|
||||
fi
|
||||
|
||||
echo "start scheduler"
|
||||
/yuzhen_iot/service_manage/manage/app/scheduler
|
||||
|
||||
0
yuzhen_iot/service_manage/manage/app/Version-1.0.19
Normal file
0
yuzhen_iot/service_manage/manage/app/Version-1.0.19
Normal file
Binary file not shown.
Binary file not shown.
@ -1,3 +1,5 @@
|
||||
hardware_sn,hardware_mode,hardware_ver,uiot_addr,uiot_port,uiot_name,uiot_key,uiot_authmode,ntp_host,register_url ,frp_server_addr,frp_server_port
|
||||
YZXHRC0125H070001,Horseman-A21,H21.0.0.1,106.75.75.68,1883,mxpoty5rco1jhwde|YZXHRC0125H070001|2,"pykqg5qpzspfce3w
|
||||
",0,106.75.75.68,,,
|
||||
YZXHRAX86NN2511250011,Horseman-A21,H21.0.0.1,106.75.75.68,1883,mxpoty5rco1jhwde|YZXHRAX86NN2511250011|2,pykqg5qpzspfce3w,0,106.75.75.68,http://106.75.75.68/dlp/v1/device/backupAndRestore
|
||||
YZXHRAX86NN2511250012,Horseman-A21,H21.0.0.1,106.75.75.68,1883,mxpoty5rco1jhwde|YZXHRAX86NN2511250012|2,pykqg5qpzspfce3w,0,106.75.75.68,http://106.75.75.68/dlp/v1/device/backupAndRestore
|
||||
YZXHRAX86NN2511250013,Horseman-A21,H21.0.0.1,106.75.75.68,1883,mxpoty5rco1jhwde|YZXHRAX86NN2511250013|2,pykqg5qpzspfce3w,0,106.75.75.68,http://106.75.75.68/dlp/v1/device/backupAndRestore
|
||||
YZXHRAX86NN2511250014,Horseman-A21,H21.0.0.1,106.75.75.68,1883,mxpoty5rco1jhwde|YZXHRAX86NN2511250014|2,pykqg5qpzspfce3w,0,106.75.75.68,http://106.75.75.68/dlp/v1/device/backupAndRestore
|
||||
YZXHRAX86NN2511250015,Horseman-A21,H21.0.0.1,106.75.75.68,1883,mxpoty5rco1jhwde|YZXHRAX86NN2511250015|2,pykqg5qpzspfce3w,0,106.75.75.68,http://106.75.75.68/dlp/v1/device/backupAndRestore
|
||||
|
Loading…
x
Reference in New Issue
Block a user