Files
ASF_tools/asf-cloud-server/testarena_1/deploy.ps1
2025-11-28 11:22:07 +01:00

177 lines
5.1 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ASF TestArena Deployment Script (PowerShell)
# This script deploys the TestArena application using Docker Compose
$ErrorActionPreference = "Stop"
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host " ASF TestArena Deployment Script" -ForegroundColor Cyan
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host ""
function Write-Success {
param($Message)
Write-Host "$Message" -ForegroundColor Green
}
function Write-Error-Custom {
param($Message)
Write-Host "$Message" -ForegroundColor Red
}
function Write-Warning-Custom {
param($Message)
Write-Host "$Message" -ForegroundColor Yellow
}
function Write-Info {
param($Message)
Write-Host " $Message" -ForegroundColor Yellow
}
# Check if Docker is installed
Write-Host "Checking prerequisites..."
try {
$null = docker --version
Write-Success "Docker is installed"
} catch {
Write-Error-Custom "Docker is not installed. Please install Docker Desktop first."
exit 1
}
# Check if Docker Compose is available
try {
$null = docker-compose --version
Write-Success "Docker Compose is installed"
} catch {
try {
$null = docker compose version
Write-Success "Docker Compose is installed"
} catch {
Write-Error-Custom "Docker Compose is not installed. Please install Docker Compose first."
exit 1
}
}
# Check if Docker daemon is running
try {
$null = docker info 2>&1
Write-Success "Docker daemon is running"
} catch {
Write-Error-Custom "Docker daemon is not running. Please start Docker Desktop first."
exit 1
}
Write-Host ""
# Check if .env file exists
if (-not (Test-Path .env)) {
Write-Warning-Custom ".env file not found. Creating from .env.example..."
if (Test-Path .env.example) {
Copy-Item .env.example .env
Write-Info "Please edit .env file and update SECRET_KEY and passwords before continuing."
Read-Host "Press Enter to continue after editing .env, or Ctrl+C to exit"
} else {
Write-Error-Custom ".env.example not found. Cannot create .env file."
exit 1
}
}
Write-Host ""
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host " Starting Deployment" -ForegroundColor Cyan
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host ""
# Check if caddy_network exists
Write-Host "Checking for Caddy network..."
try {
$null = docker network inspect caddy_network 2>&1
Write-Success "Caddy network (caddy_network) exists"
} catch {
Write-Warning-Custom "Caddy network (caddy_network) not found"
$response = Read-Host "Do you want to create it? (y/n)"
if ($response -eq 'y' -or $response -eq 'Y') {
docker network create caddy_network
Write-Success "Created caddy_network"
} else {
Write-Error-Custom "Caddy network is required. Exiting."
exit 1
}
}
Write-Host ""
# Stop existing containers if running
Write-Host "Stopping existing containers (if any)..."
try {
docker-compose down 2>$null
} catch {
# Ignore errors if containers don't exist
}
Write-Success "Stopped existing containers"
Write-Host ""
# Build and start containers
Write-Host "Building and starting containers..."
Write-Host "This may take a few minutes on first run..."
Write-Host ""
try {
docker-compose up -d --build
Write-Success "Containers built and started successfully"
} catch {
Write-Error-Custom "Failed to start containers"
Write-Host ""
Write-Host "Check logs with: docker-compose logs"
exit 1
}
Write-Host ""
Write-Host "Waiting for services to initialize..."
Start-Sleep -Seconds 5
# Check if containers are running
Write-Host ""
Write-Host "Checking container status..."
$webRunning = docker ps | Select-String "testarena_web"
$dbRunning = docker ps | Select-String "testarena_db"
if ($webRunning -and $dbRunning) {
Write-Success "All containers are running"
} else {
Write-Error-Custom "Some containers failed to start"
Write-Host ""
Write-Host "Container status:"
docker-compose ps
Write-Host ""
Write-Host "Check logs with: docker-compose logs"
exit 1
}
Write-Host ""
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host " Deployment Complete!" -ForegroundColor Cyan
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host ""
Write-Success "ASF TestArena is now running"
Write-Host ""
Write-Host "Access the application at:"
Write-Host " • Local: http://localhost:5000"
Write-Host " • Domain: https://testarena.nabd-co.com"
Write-Host ""
Write-Host "Default credentials:"
Write-Host " • Username: admin"
Write-Host " • Password: admin123"
Write-Host ""
Write-Warning-Custom "IMPORTANT: Change the default admin password immediately!"
Write-Host ""
Write-Host "Useful commands:"
Write-Host " • View logs: docker-compose logs -f"
Write-Host " • Stop: docker-compose down"
Write-Host " • Restart: docker-compose restart"
Write-Host " • Status: docker-compose ps"
Write-Host ""
Write-Host "For help, see START_HERE.md or INDEX.md"
Write-Host ""