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.
168 lines
4.1 KiB
168 lines
4.1 KiB
#!/bin/bash
|
|
|
|
# Docker utilities for Swarms project
|
|
# Usage: ./scripts/docker-utils.sh [command]
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Configuration
|
|
IMAGE_NAME="swarms"
|
|
REGISTRY="kyegomez"
|
|
FULL_IMAGE_NAME="${REGISTRY}/${IMAGE_NAME}"
|
|
|
|
# Functions
|
|
print_usage() {
|
|
echo -e "${BLUE}Docker Utilities for Swarms${NC}"
|
|
echo ""
|
|
echo "Usage: $0 [command]"
|
|
echo ""
|
|
echo "Commands:"
|
|
echo " build Build the Docker image locally"
|
|
echo " test Test the Docker image"
|
|
echo " run Run the Docker image interactively"
|
|
echo " push Push to DockerHub (requires login)"
|
|
echo " clean Clean up Docker images and containers"
|
|
echo " logs Show logs from running containers"
|
|
echo " shell Open shell in running container"
|
|
echo " compose-up Start services with docker-compose"
|
|
echo " compose-down Stop services with docker-compose"
|
|
echo " help Show this help message"
|
|
echo ""
|
|
}
|
|
|
|
build_image() {
|
|
echo -e "${GREEN}Building Docker image...${NC}"
|
|
docker build -t "${IMAGE_NAME}:latest" .
|
|
echo -e "${GREEN} Image built successfully!${NC}"
|
|
}
|
|
|
|
test_image() {
|
|
echo -e "${GREEN}Testing Docker image...${NC}"
|
|
docker run --rm "${IMAGE_NAME}:latest" python test_docker.py
|
|
echo -e "${GREEN} Image test completed!${NC}"
|
|
}
|
|
|
|
run_interactive() {
|
|
echo -e "${GREEN}Running Docker image interactively...${NC}"
|
|
docker run -it --rm \
|
|
-v "$(pwd):/app" \
|
|
-w /app \
|
|
"${IMAGE_NAME}:latest" bash
|
|
}
|
|
|
|
push_to_dockerhub() {
|
|
echo -e "${YELLOW}⚠ Make sure you're logged into DockerHub first!${NC}"
|
|
echo -e "${GREEN}Pushing to DockerHub...${NC}"
|
|
|
|
# Tag the image
|
|
docker tag "${IMAGE_NAME}:latest" "${FULL_IMAGE_NAME}:latest"
|
|
|
|
# Push to DockerHub
|
|
docker push "${FULL_IMAGE_NAME}:latest"
|
|
|
|
echo -e "${GREEN} Image pushed to DockerHub!${NC}"
|
|
}
|
|
|
|
clean_docker() {
|
|
echo -e "${YELLOW}Cleaning up Docker resources...${NC}"
|
|
|
|
# Stop and remove containers
|
|
docker ps -aq | xargs -r docker rm -f
|
|
|
|
# Remove images
|
|
docker images "${IMAGE_NAME}" -q | xargs -r docker rmi -f
|
|
|
|
# Remove dangling images
|
|
docker image prune -f
|
|
|
|
echo -e "${GREEN} Docker cleanup completed!${NC}"
|
|
}
|
|
|
|
show_logs() {
|
|
echo -e "${GREEN}Showing logs from running containers...${NC}"
|
|
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
|
echo ""
|
|
|
|
# Show logs for swarms containers
|
|
for container in $(docker ps --filter "name=swarms" --format "{{.Names}}"); do
|
|
echo -e "${BLUE}Logs for $container:${NC}"
|
|
docker logs "$container" --tail 20
|
|
echo ""
|
|
done
|
|
}
|
|
|
|
open_shell() {
|
|
echo -e "${GREEN}Opening shell in running container...${NC}"
|
|
|
|
# Find running swarms container
|
|
container=$(docker ps --filter "name=swarms" --format "{{.Names}}" | head -1)
|
|
|
|
if [ -z "$container" ]; then
|
|
echo -e "${RED} No running swarms container found!${NC}"
|
|
echo "Start a container first with: $0 run"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${BLUE}Opening shell in $container...${NC}"
|
|
docker exec -it "$container" bash
|
|
}
|
|
|
|
compose_up() {
|
|
echo -e "${GREEN}Starting services with docker-compose...${NC}"
|
|
docker-compose up -d
|
|
echo -e "${GREEN} Services started!${NC}"
|
|
echo "Use 'docker-compose logs -f' to view logs"
|
|
}
|
|
|
|
compose_down() {
|
|
echo -e "${YELLOW}Stopping services with docker-compose...${NC}"
|
|
docker-compose down
|
|
echo -e "${GREEN} Services stopped!${NC}"
|
|
}
|
|
|
|
# Main script logic
|
|
case "${1:-help}" in
|
|
build)
|
|
build_image
|
|
;;
|
|
test)
|
|
test_image
|
|
;;
|
|
run)
|
|
run_interactive
|
|
;;
|
|
push)
|
|
push_to_dockerhub
|
|
;;
|
|
clean)
|
|
clean_docker
|
|
;;
|
|
logs)
|
|
show_logs
|
|
;;
|
|
shell)
|
|
open_shell
|
|
;;
|
|
compose-up)
|
|
compose_up
|
|
;;
|
|
compose-down)
|
|
compose_down
|
|
;;
|
|
help|--help|-h)
|
|
print_usage
|
|
;;
|
|
*)
|
|
echo -e "${RED} Unknown command: $1${NC}"
|
|
print_usage
|
|
exit 1
|
|
;;
|
|
esac
|