# 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 }