Update nexus: fix conflicts and sync local changes
This commit is contained in:
@@ -1,163 +1,163 @@
|
||||
#!/bin/bash
|
||||
# Docker Compose配置编辑器
|
||||
# 用法: ./docker-config-editor.sh <服务器> <应用> <操作> [参数]
|
||||
|
||||
set -e
|
||||
|
||||
SERVER="$1"
|
||||
APP="$2"
|
||||
ACTION="$3"
|
||||
shift 3
|
||||
|
||||
# 根据服务器获取应用路径
|
||||
get_app_path() {
|
||||
local server="$1"
|
||||
local app="$2"
|
||||
|
||||
case "$server" in
|
||||
macmini)
|
||||
echo "/Users/weishen/docker/$app"
|
||||
;;
|
||||
ubuntu1)
|
||||
echo "/home/shenwei/Docker/$app"
|
||||
;;
|
||||
ubuntu2)
|
||||
echo "/home/shenwei/docker/$app"
|
||||
;;
|
||||
nas)
|
||||
echo "/volume1/docker/$app"
|
||||
;;
|
||||
*)
|
||||
echo "未知服务器: $server" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# 备份docker-compose.yml文件
|
||||
backup_config() {
|
||||
local app_path="$1"
|
||||
local timestamp=$(date +%Y%m%d%H%M%S)
|
||||
|
||||
echo "📁 创建备份..."
|
||||
ssh "$SERVER" "cd '$app_path' && cp docker-compose.yml docker-compose.yml.backup.$timestamp"
|
||||
|
||||
# 清理旧备份,只保留最近5个
|
||||
ssh "$SERVER" "cd '$app_path' && ls -t docker-compose.yml.backup.* 2>/dev/null | tail -n +6 | xargs -r rm -f"
|
||||
|
||||
echo "✅ 备份创建完成: docker-compose.yml.backup.$timestamp"
|
||||
}
|
||||
|
||||
# 验证docker-compose配置格式
|
||||
validate_config() {
|
||||
local app_path="$1"
|
||||
|
||||
echo "🔍 验证配置格式..."
|
||||
if ssh "$SERVER" "cd '$app_path' && docker compose config >/dev/null 2>&1"; then
|
||||
echo "✅ 配置格式验证通过"
|
||||
return 0
|
||||
else
|
||||
echo "❌ 配置格式验证失败"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 显示当前配置
|
||||
show_config() {
|
||||
local app_path="$1"
|
||||
|
||||
echo "📄 当前docker-compose.yml内容:"
|
||||
echo "─────────────────────────────"
|
||||
ssh "$SERVER" "cat '$app_path/docker-compose.yml'"
|
||||
echo "─────────────────────────────"
|
||||
}
|
||||
|
||||
# 显示修改前后的差异
|
||||
show_diff() {
|
||||
local app_path="$1"
|
||||
local temp_file="$2"
|
||||
|
||||
echo "📊 修改前后差异:"
|
||||
echo "─────────────────────────────"
|
||||
# 获取原文件内容
|
||||
local original_content=$(ssh "$SERVER" "cat '$app_path/docker-compose.yml'")
|
||||
|
||||
# 使用diff比较
|
||||
diff -u <(echo "$original_content") "$temp_file" || true
|
||||
echo "─────────────────────────────"
|
||||
}
|
||||
|
||||
# 应用修改
|
||||
apply_changes() {
|
||||
local app_path="$1"
|
||||
local temp_file="$2"
|
||||
|
||||
echo "🔄 应用修改..."
|
||||
cat "$temp_file" | ssh "$SERVER" "cat > '$app_path/docker-compose.yml'"
|
||||
|
||||
if validate_config "$app_path"; then
|
||||
echo "✅ 修改已应用并验证通过"
|
||||
return 0
|
||||
else
|
||||
echo "❌ 修改后配置验证失败,已回滚"
|
||||
# 回滚到最新备份
|
||||
local latest_backup=$(ssh "$SERVER" "cd '$app_path' && ls -t docker-compose.yml.backup.* 2>/dev/null | head -1")
|
||||
if [ -n "$latest_backup" ]; then
|
||||
ssh "$SERVER" "cd '$app_path' && cp '$latest_backup' docker-compose.yml"
|
||||
echo "🔄 已回滚到备份: $latest_backup"
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 重启应用
|
||||
restart_app() {
|
||||
local app_path="$1"
|
||||
|
||||
echo "🔄 重启应用..."
|
||||
ssh "$SERVER" "cd '$app_path' && docker compose down && docker compose up -d"
|
||||
|
||||
# 等待应用启动
|
||||
sleep 5
|
||||
|
||||
echo "📊 应用状态:"
|
||||
ssh "$SERVER" "cd '$app_path' && docker compose ps"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
if [ $# -lt 3 ]; then
|
||||
echo "用法: $0 <服务器> <应用> <操作> [参数]"
|
||||
echo "示例: $0 ubuntu1 portainer show"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
APP_PATH=$(get_app_path "$SERVER" "$APP")
|
||||
echo "🎯 目标: $SERVER -> $APP ($APP_PATH)"
|
||||
|
||||
case "$ACTION" in
|
||||
show)
|
||||
show_config "$APP_PATH"
|
||||
;;
|
||||
backup)
|
||||
backup_config "$APP_PATH"
|
||||
;;
|
||||
validate)
|
||||
validate_config "$APP_PATH"
|
||||
;;
|
||||
restart)
|
||||
restart_app "$APP_PATH"
|
||||
;;
|
||||
edit)
|
||||
# 编辑模式需要交互
|
||||
echo "⚠️ 编辑模式需要交互式操作,请使用其他工具"
|
||||
;;
|
||||
*)
|
||||
echo "未知操作: $ACTION"
|
||||
echo "可用操作: show, backup, validate, restart"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
#!/bin/bash
|
||||
# Docker Compose配置编辑器
|
||||
# 用法: ./docker-config-editor.sh <服务器> <应用> <操作> [参数]
|
||||
|
||||
set -e
|
||||
|
||||
SERVER="$1"
|
||||
APP="$2"
|
||||
ACTION="$3"
|
||||
shift 3
|
||||
|
||||
# 根据服务器获取应用路径
|
||||
get_app_path() {
|
||||
local server="$1"
|
||||
local app="$2"
|
||||
|
||||
case "$server" in
|
||||
macmini)
|
||||
echo "/Users/weishen/docker/$app"
|
||||
;;
|
||||
ubuntu1)
|
||||
echo "/home/shenwei/Docker/$app"
|
||||
;;
|
||||
ubuntu2)
|
||||
echo "/home/shenwei/docker/$app"
|
||||
;;
|
||||
nas)
|
||||
echo "/volume1/docker/$app"
|
||||
;;
|
||||
*)
|
||||
echo "未知服务器: $server" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# 备份docker-compose.yml文件
|
||||
backup_config() {
|
||||
local app_path="$1"
|
||||
local timestamp=$(date +%Y%m%d%H%M%S)
|
||||
|
||||
echo "📁 创建备份..."
|
||||
ssh "$SERVER" "cd '$app_path' && cp docker-compose.yml docker-compose.yml.backup.$timestamp"
|
||||
|
||||
# 清理旧备份,只保留最近5个
|
||||
ssh "$SERVER" "cd '$app_path' && ls -t docker-compose.yml.backup.* 2>/dev/null | tail -n +6 | xargs -r rm -f"
|
||||
|
||||
echo "✅ 备份创建完成: docker-compose.yml.backup.$timestamp"
|
||||
}
|
||||
|
||||
# 验证docker-compose配置格式
|
||||
validate_config() {
|
||||
local app_path="$1"
|
||||
|
||||
echo "🔍 验证配置格式..."
|
||||
if ssh "$SERVER" "cd '$app_path' && docker compose config >/dev/null 2>&1"; then
|
||||
echo "✅ 配置格式验证通过"
|
||||
return 0
|
||||
else
|
||||
echo "❌ 配置格式验证失败"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 显示当前配置
|
||||
show_config() {
|
||||
local app_path="$1"
|
||||
|
||||
echo "📄 当前docker-compose.yml内容:"
|
||||
echo "─────────────────────────────"
|
||||
ssh "$SERVER" "cat '$app_path/docker-compose.yml'"
|
||||
echo "─────────────────────────────"
|
||||
}
|
||||
|
||||
# 显示修改前后的差异
|
||||
show_diff() {
|
||||
local app_path="$1"
|
||||
local temp_file="$2"
|
||||
|
||||
echo "📊 修改前后差异:"
|
||||
echo "─────────────────────────────"
|
||||
# 获取原文件内容
|
||||
local original_content=$(ssh "$SERVER" "cat '$app_path/docker-compose.yml'")
|
||||
|
||||
# 使用diff比较
|
||||
diff -u <(echo "$original_content") "$temp_file" || true
|
||||
echo "─────────────────────────────"
|
||||
}
|
||||
|
||||
# 应用修改
|
||||
apply_changes() {
|
||||
local app_path="$1"
|
||||
local temp_file="$2"
|
||||
|
||||
echo "🔄 应用修改..."
|
||||
cat "$temp_file" | ssh "$SERVER" "cat > '$app_path/docker-compose.yml'"
|
||||
|
||||
if validate_config "$app_path"; then
|
||||
echo "✅ 修改已应用并验证通过"
|
||||
return 0
|
||||
else
|
||||
echo "❌ 修改后配置验证失败,已回滚"
|
||||
# 回滚到最新备份
|
||||
local latest_backup=$(ssh "$SERVER" "cd '$app_path' && ls -t docker-compose.yml.backup.* 2>/dev/null | head -1")
|
||||
if [ -n "$latest_backup" ]; then
|
||||
ssh "$SERVER" "cd '$app_path' && cp '$latest_backup' docker-compose.yml"
|
||||
echo "🔄 已回滚到备份: $latest_backup"
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 重启应用
|
||||
restart_app() {
|
||||
local app_path="$1"
|
||||
|
||||
echo "🔄 重启应用..."
|
||||
ssh "$SERVER" "cd '$app_path' && docker compose down && docker compose up -d"
|
||||
|
||||
# 等待应用启动
|
||||
sleep 5
|
||||
|
||||
echo "📊 应用状态:"
|
||||
ssh "$SERVER" "cd '$app_path' && docker compose ps"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
if [ $# -lt 3 ]; then
|
||||
echo "用法: $0 <服务器> <应用> <操作> [参数]"
|
||||
echo "示例: $0 ubuntu1 portainer show"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
APP_PATH=$(get_app_path "$SERVER" "$APP")
|
||||
echo "🎯 目标: $SERVER -> $APP ($APP_PATH)"
|
||||
|
||||
case "$ACTION" in
|
||||
show)
|
||||
show_config "$APP_PATH"
|
||||
;;
|
||||
backup)
|
||||
backup_config "$APP_PATH"
|
||||
;;
|
||||
validate)
|
||||
validate_config "$APP_PATH"
|
||||
;;
|
||||
restart)
|
||||
restart_app "$APP_PATH"
|
||||
;;
|
||||
edit)
|
||||
# 编辑模式需要交互
|
||||
echo "⚠️ 编辑模式需要交互式操作,请使用其他工具"
|
||||
;;
|
||||
*)
|
||||
echo "未知操作: $ACTION"
|
||||
echo "可用操作: show, backup, validate, restart"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user