You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
swarms/scripts/docker/docker-utils.ps1

140 lines
4.5 KiB

# Docker utilities for Swarms project (PowerShell version)
# Usage: .\scripts\docker-utils.ps1 [command]
param(
[Parameter(Position=0)]
[string]$Command = "help"
)
# Configuration
$ImageName = "swarms"
$Registry = "kyegomez"
$FullImageName = "$Registry/$ImageName"
# Functions
function Write-Usage {
Write-Host "Docker Utilities for Swarms" -ForegroundColor Blue
Write-Host ""
Write-Host "Usage: .\scripts\docker-utils.ps1 [command]"
Write-Host ""
Write-Host "Commands:"
Write-Host " build Build the Docker image locally"
Write-Host " test Test the Docker image"
Write-Host " run Run the Docker image interactively"
Write-Host " push Push to DockerHub (requires login)"
Write-Host " clean Clean up Docker images and containers"
Write-Host " logs Show logs from running containers"
Write-Host " shell Open shell in running container"
Write-Host " compose-up Start services with docker-compose"
Write-Host " compose-down Stop services with docker-compose"
Write-Host " help Show this help message"
Write-Host ""
}
function Build-Image {
Write-Host "Building Docker image..." -ForegroundColor Green
docker build -t "$ImageName`:latest" .
Write-Host " Image built successfully!" -ForegroundColor Green
}
function Test-Image {
Write-Host "Testing Docker image..." -ForegroundColor Green
docker run --rm "$ImageName`:latest" python test_docker.py
Write-Host " Image test completed!" -ForegroundColor Green
}
function Run-Interactive {
Write-Host "Running Docker image interactively..." -ForegroundColor Green
docker run -it --rm -v "${PWD}:/app" -w /app "$ImageName`:latest" bash
}
function Push-ToDockerHub {
Write-Host "⚠ Make sure you're logged into DockerHub first!" -ForegroundColor Yellow
Write-Host "Pushing to DockerHub..." -ForegroundColor Green
# Tag the image
docker tag "$ImageName`:latest" "$FullImageName`:latest"
# Push to DockerHub
docker push "$FullImageName`:latest"
Write-Host " Image pushed to DockerHub!" -ForegroundColor Green
}
function Clean-Docker {
Write-Host "Cleaning up Docker resources..." -ForegroundColor Yellow
# Stop and remove containers
docker ps -aq | ForEach-Object { docker rm -f $_ }
# Remove images
docker images "$ImageName" -q | ForEach-Object { docker rmi -f $_ }
# Remove dangling images
docker image prune -f
Write-Host " Docker cleanup completed!" -ForegroundColor Green
}
function Show-Logs {
Write-Host "Showing logs from running containers..." -ForegroundColor Green
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
Write-Host ""
# Show logs for swarms containers
$containers = docker ps --filter "name=swarms" --format "{{.Names}}"
foreach ($container in $containers) {
Write-Host "Logs for $container:" -ForegroundColor Blue
docker logs $container --tail 20
Write-Host ""
}
}
function Open-Shell {
Write-Host "Opening shell in running container..." -ForegroundColor Green
# Find running swarms container
$container = docker ps --filter "name=swarms" --format "{{.Names}}" | Select-Object -First 1
if (-not $container) {
Write-Host " No running swarms container found!" -ForegroundColor Red
Write-Host "Start a container first with: .\scripts\docker-utils.ps1 run"
exit 1
}
Write-Host "Opening shell in $container..." -ForegroundColor Blue
docker exec -it $container bash
}
function Compose-Up {
Write-Host "Starting services with docker-compose..." -ForegroundColor Green
docker-compose up -d
Write-Host " Services started!" -ForegroundColor Green
Write-Host "Use 'docker-compose logs -f' to view logs"
}
function Compose-Down {
Write-Host "Stopping services with docker-compose..." -ForegroundColor Yellow
docker-compose down
Write-Host " Services stopped!" -ForegroundColor Green
}
# Main script logic
switch ($Command.ToLower()) {
"build" { Build-Image }
"test" { Test-Image }
"run" { Run-Interactive }
"push" { Push-ToDockerHub }
"clean" { Clean-Docker }
"logs" { Show-Logs }
"shell" { Open-Shell }
"compose-up" { Compose-Up }
"compose-down" { Compose-Down }
"help" { Write-Usage }
default {
Write-Host " Unknown command: $Command" -ForegroundColor Red
Write-Usage
exit 1
}
}