Enhance Gitea database backup script with relative paths, logging, and Docker checks; update scheduling script to include Docker check

This commit is contained in:
2025-04-19 19:36:36 -06:00
parent 5f329bc7e3
commit cba5e8167b
8 changed files with 157 additions and 9 deletions

83
ensure-docker-running.ps1 Normal file
View File

@@ -0,0 +1,83 @@
# Script to ensure Docker is running before scheduled backup
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$logFile = Join-Path $scriptDir "backups\docker-status.log"
$timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
# Ensure log directory exists
$backupDir = Join-Path $scriptDir "backups"
if (-not (Test-Path $backupDir)) {
New-Item -ItemType Directory -Path $backupDir
}
"[$timestamp] Checking Docker status..." | Out-File -Append -FilePath $logFile
# Check if Docker Desktop is running
$dockerProcess = Get-Process "Docker Desktop" -ErrorAction SilentlyContinue
if ($null -eq $dockerProcess) {
"[$timestamp] Docker Desktop is not running. Attempting to start..." | Out-File -Append -FilePath $logFile
# Path to Docker Desktop
$dockerPath = "C:\Program Files\Docker\Docker\Docker Desktop.exe"
if (Test-Path $dockerPath) {
Start-Process $dockerPath
"[$timestamp] Started Docker Desktop." | Out-File -Append -FilePath $logFile
# Wait for Docker to start up (give it 60 seconds)
$maxWaitTime = 60
$waitTime = 0
$dockerRunning = $false
while (-not $dockerRunning -and $waitTime -lt $maxWaitTime) {
Start-Sleep -Seconds 5
$waitTime += 5
try {
$dockerStatus = docker info 2>&1
if ($LASTEXITCODE -eq 0) {
$dockerRunning = $true
"[$timestamp] Docker is now running after waiting $waitTime seconds." | Out-File -Append -FilePath $logFile
}
} catch {
# Keep waiting
}
}
if (-not $dockerRunning) {
"[$timestamp] Docker did not start successfully after waiting $maxWaitTime seconds." | Out-File -Append -FilePath $logFile
}
} else {
"[$timestamp] Docker Desktop executable not found at expected location: $dockerPath" | Out-File -Append -FilePath $logFile
}
} else {
"[$timestamp] Docker Desktop is already running." | Out-File -Append -FilePath $logFile
}
# Check if containers are running
try {
$containersRunning = docker ps 2>&1
if ($LASTEXITCODE -eq 0) {
"[$timestamp] Docker containers status: " | Out-File -Append -FilePath $logFile
$runningContainers = docker ps --format "{{.Names}}" 2>&1
$runningContainers | Out-File -Append -FilePath $logFile
# Check specifically for gitea containers
$giteaRunning = $runningContainers | Select-String -Pattern "gitea" -Quiet
if (-not $giteaRunning) {
"[$timestamp] Gitea containers are not running. Starting containers..." | Out-File -Append -FilePath $logFile
# Navigate to gitea-docker directory and start containers
Set-Location $scriptDir
docker-compose up -d 2>&1 | Out-File -Append -FilePath $logFile
if ($LASTEXITCODE -eq 0) {
"[$timestamp] Successfully started Gitea containers." | Out-File -Append -FilePath $logFile
} else {
"[$timestamp] Failed to start Gitea containers." | Out-File -Append -FilePath $logFile
}
}
} else {
"[$timestamp] Failed to check running containers. Docker might not be ready yet." | Out-File -Append -FilePath $logFile
}
} catch {
"[$timestamp] Error checking Docker containers: $_" | Out-File -Append -FilePath $logFile
}