添加基础设施服务启动等待时间
- MySQL 等待 30 秒初始化 - Redis 等待 10 秒 - Nacos 等待 20 秒(确保 MySQL 就绪) - 解决 Nacos 无法连接 MySQL 的问题
This commit is contained in:
parent
bae9bdd9a0
commit
ddf030a178
|
|
@ -217,11 +217,14 @@ infrastructure:
|
||||||
- cp sql/ry_20250523.sql docker/mysql/db/
|
- cp sql/ry_20250523.sql docker/mysql/db/
|
||||||
- cp sql/ry_config_20250902.sql docker/mysql/db/
|
- cp sql/ry_config_20250902.sql docker/mysql/db/
|
||||||
deployed_flag: .devops/.deployed_mysql
|
deployed_flag: .devops/.deployed_mysql
|
||||||
|
wait_time: 30 # MySQL 需要更长时间初始化
|
||||||
|
|
||||||
- name: ruoyi-redis
|
- name: ruoyi-redis
|
||||||
docker_service: ruoyi-redis
|
docker_service: ruoyi-redis
|
||||||
deployed_flag: .devops/.deployed_redis
|
deployed_flag: .devops/.deployed_redis
|
||||||
|
wait_time: 10 # Redis 启动较快
|
||||||
|
|
||||||
- name: ruoyi-nacos
|
- name: ruoyi-nacos
|
||||||
docker_service: ruoyi-nacos
|
docker_service: ruoyi-nacos
|
||||||
deployed_flag: .devops/.deployed_nacos
|
deployed_flag: .devops/.deployed_nacos
|
||||||
|
wait_time: 20 # Nacos 需要等待 MySQL 就绪
|
||||||
|
|
|
||||||
|
|
@ -322,38 +322,44 @@ class Deployer:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
repo_path = self.runtime_path / 'a-cloud-all'
|
repo_path = self.runtime_path / 'a-cloud-all'
|
||||||
|
|
||||||
for infra in self.config['infrastructure']:
|
for infra in self.config['infrastructure']:
|
||||||
name = infra['name']
|
name = infra['name']
|
||||||
deployed_flag = repo_path / infra['deployed_flag']
|
deployed_flag = repo_path / infra['deployed_flag']
|
||||||
|
|
||||||
# 检查是否已部署
|
# 检查是否已部署
|
||||||
if deployed_flag.exists():
|
if deployed_flag.exists():
|
||||||
self.logger.info(f"基础设施 {name} 已部署,跳过")
|
self.logger.info(f"基础设施 {name} 已部署,跳过")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
self.logger.info(f"部署基础设施: {name}")
|
self.logger.info(f"部署基础设施: {name}")
|
||||||
|
|
||||||
# 执行预部署命令
|
# 执行预部署命令
|
||||||
if 'pre_deploy_commands' in infra:
|
if 'pre_deploy_commands' in infra:
|
||||||
for cmd in infra['pre_deploy_commands']:
|
for cmd in infra['pre_deploy_commands']:
|
||||||
if not self.run_command(cmd, cwd=repo_path):
|
if not self.run_command(cmd, cwd=repo_path):
|
||||||
self.logger.error(f"预部署命令失败: {cmd}")
|
self.logger.error(f"预部署命令失败: {cmd}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# 部署服务
|
# 部署服务
|
||||||
docker_service = infra['docker_service']
|
docker_service = infra['docker_service']
|
||||||
docker_dir = repo_path / 'docker'
|
docker_dir = repo_path / 'docker'
|
||||||
|
|
||||||
cmd = f"docker-compose build --no-cache {docker_service} && docker-compose up -d {docker_service}"
|
cmd = f"docker-compose build --no-cache {docker_service} && docker-compose up -d {docker_service}"
|
||||||
if not self.run_command(cmd, cwd=docker_dir, timeout=1800):
|
if not self.run_command(cmd, cwd=docker_dir, timeout=1800):
|
||||||
self.logger.error(f"部署失败: {name}")
|
self.logger.error(f"部署失败: {name}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# 等待服务启动(特别是 MySQL 和 Redis)
|
||||||
|
wait_time = infra.get('wait_time', 10)
|
||||||
|
self.logger.info(f"等待 {name} 启动完成 ({wait_time} 秒)...")
|
||||||
|
import time
|
||||||
|
time.sleep(wait_time)
|
||||||
|
|
||||||
# 创建部署标记
|
# 创建部署标记
|
||||||
deployed_flag.parent.mkdir(parents=True, exist_ok=True)
|
deployed_flag.parent.mkdir(parents=True, exist_ok=True)
|
||||||
deployed_flag.touch()
|
deployed_flag.touch()
|
||||||
|
|
||||||
self.logger.info(f"基础设施部署完成: {name}")
|
self.logger.info(f"基础设施部署完成: {name}")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue