fix: исправления и улучшения от 30.04.2026
Some checks failed
Backend Tests / pytest (Python 3.12) (push) Has been cancelled
Some checks failed
Backend Tests / pytest (Python 3.12) (push) Has been cancelled
- Обновлён backend/Dockerfile и frontend/Dockerfile - Исправлен async_ops.py (новые асинхронные операции) - Обновлён config.py - Исправлены compose.yml и compose.prod.yml - Обновлён deploy.sh - Переименованы nginx-конфиги (serverpanel → pvemanager) - Улучшены InstanceActionDialogs, InstanceDetailPage, InstancesPage - Обновлён AppLayout.tsx - Исправлен init.sql - Обновлён frontend/nginx.conf и package.json
This commit is contained in:
53
pve
53
pve
@@ -41,8 +41,8 @@ declare -a _CF_ARGS
|
||||
_resolve_compose() {
|
||||
_CF_ARGS=("-f" "compose.yml")
|
||||
if [ -f "$PVE_DIR/compose.prod.yml" ] && \
|
||||
{ docker ps -a --format '{{.Names}}' 2>/dev/null | grep -q "serverpanel-nginx" || \
|
||||
[ -f "$PVE_DIR/nginx/conf.d/serverpanel.conf" ]; }; then
|
||||
{ docker ps -a --format '{{.Names}}' 2>/dev/null | grep -q "pvemanager-nginx" || \
|
||||
[ -f "$PVE_DIR/nginx/conf.d/pvemanager.conf" ]; }; then
|
||||
_CF_ARGS=("-f" "compose.yml" "-f" "compose.prod.yml")
|
||||
fi
|
||||
}
|
||||
@@ -66,14 +66,14 @@ wait_for_containers() {
|
||||
info "Ожидание готовности контейнеров..."
|
||||
while [ $elapsed -lt $timeout ]; do
|
||||
# Проверяем, что все контейнеры запущены и healthy
|
||||
local app_status=$(docker ps --filter "name=serverpanel-app" --format "{{.State}}")
|
||||
local db_status=$(docker ps --filter "name=serverpanel-db" --format "{{.State}}")
|
||||
local frontend_status=$(docker ps --filter "name=serverpanel-frontend" --format "{{.State}}")
|
||||
local app_status=$(docker ps --filter "name=pvemanager-app" --format "{{.State}}")
|
||||
local db_status=$(docker ps --filter "name=pvemanager-db" --format "{{.State}}")
|
||||
local frontend_status=$(docker ps --filter "name=pvemanager-frontend" --format "{{.State}}")
|
||||
|
||||
if [ "$app_status" = "running" ] && [ "$db_status" = "running" ] && [ "$frontend_status" = "running" ]; then
|
||||
# Проверяем healthcheck статусы
|
||||
local app_health=$(docker inspect serverpanel-app --format='{{.State.Health.Status}}' 2>/dev/null)
|
||||
local db_health=$(docker inspect serverpanel-db --format='{{.State.Health.Status}}' 2>/dev/null)
|
||||
local app_health=$(docker inspect pvemanager-app --format='{{.State.Health.Status}}' 2>/dev/null)
|
||||
local db_health=$(docker inspect pvemanager-db --format='{{.State.Health.Status}}' 2>/dev/null)
|
||||
|
||||
if [ "$app_health" = "healthy" ] && [ "$db_health" = "healthy" ]; then
|
||||
ok "Все контейнеры готовы"
|
||||
@@ -129,15 +129,16 @@ cmd_stop() {
|
||||
ok "Панель остановлена"
|
||||
}
|
||||
|
||||
# ── pve restart (полная пересборка) ───────────────────────────────────────────
|
||||
# ── pve restart (быстрая пересборка с кешем) ─────────────────────────────────
|
||||
cmd_restart() {
|
||||
check_docker; check_pve_dir
|
||||
step "Остановка контейнеров"
|
||||
pve_dc down
|
||||
|
||||
step "Пересборка образа app (без кеша)"
|
||||
if ! pve_dc build --no-cache app; then
|
||||
die "Не удалось пересобрать образ app"
|
||||
step "Пересборка образов (с кешем, BuildKit, параллельно)"
|
||||
if ! DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 \
|
||||
pve_dc build --parallel; then
|
||||
die "Не удалось пересобрать образы"
|
||||
fi
|
||||
|
||||
step "Запуск контейнеров"
|
||||
@@ -157,6 +158,30 @@ cmd_restart() {
|
||||
pve_dc ps
|
||||
}
|
||||
|
||||
# ── pve rebuild (полная пересборка БЕЗ кеша — медленно, использовать редко) ──
|
||||
cmd_rebuild() {
|
||||
check_docker; check_pve_dir
|
||||
step "Остановка контейнеров"
|
||||
pve_dc down
|
||||
|
||||
step "Полная пересборка образов (--no-cache, --pull)"
|
||||
warn "Это займёт несколько минут — кеш слоёв игнорируется."
|
||||
if ! DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 \
|
||||
pve_dc build --no-cache --pull --parallel; then
|
||||
die "Не удалось пересобрать образы"
|
||||
fi
|
||||
|
||||
step "Запуск контейнеров"
|
||||
if ! pve_dc up -d; then
|
||||
die "Не удалось запустить панель после пересборки"
|
||||
fi
|
||||
|
||||
wait_for_containers
|
||||
ok "Панель полностью пересобрана и запущена"
|
||||
echo ""
|
||||
pve_dc ps
|
||||
}
|
||||
|
||||
# ── pve update ────────────────────────────────────────────────────────────────
|
||||
cmd_update() {
|
||||
check_docker; check_pve_dir
|
||||
@@ -199,11 +224,11 @@ cmd_backup() {
|
||||
pg_pass=$(grep -E '^POSTGRES_PASSWORD=' "$PVE_DIR/.env" 2>/dev/null | head -1 | cut -d= -f2- | tr -d '"')
|
||||
local dump_ok=false
|
||||
|
||||
if docker ps --format '{{.Names}}' 2>/dev/null | grep -q "serverpanel-db"; then
|
||||
if docker ps --format '{{.Names}}' 2>/dev/null | grep -q "pvemanager-db"; then
|
||||
if docker exec -i \
|
||||
-e PGPASSWORD="$pg_pass" \
|
||||
serverpanel-db \
|
||||
pg_dump -U serverpanel -d serverpanel \
|
||||
pvemanager-db \
|
||||
pg_dump -U pvemanager -d pvemanager \
|
||||
> "$tmp_dir/db_dump.sql" 2>/dev/null; then
|
||||
dump_ok=true
|
||||
ok "Дамп БД: $(du -sh "$tmp_dir/db_dump.sql" | cut -f1)"
|
||||
|
||||
Reference in New Issue
Block a user