#!/bin/bash # KidsAI Explorer - Docker Development Setup Script # This script sets up the development environment with optional Docker Bake support set -e echo "๐Ÿš€ KidsAI Explorer - Docker Setup" echo "==================================" # Check if Docker is running if ! docker info > /dev/null 2>&1; then echo "โŒ Docker is not running. Please start Docker first." exit 1 fi # Check if docker-compose is available if ! command -v docker-compose &> /dev/null; then echo "โŒ docker-compose is not installed. Please install Docker Compose v2." exit 1 fi # Create .env file if it doesn't exist if [ ! -f .env ]; then echo "๐Ÿ“ Creating .env file from template..." cp .env.example .env echo "โš ๏ธ Please edit .env file and add your API keys before running the application." fi # Check if Docker Buildx is available for Bake support if docker buildx version &> /dev/null 2>&1; then export COMPOSE_BAKE=true echo "โœ… Docker Bake support enabled (Docker Buildx available)" else echo "โš ๏ธ Docker Buildx not available - using standard builds" echo " For better build performance, consider upgrading to Docker Desktop or installing buildx" fi # Function to show available commands show_help() { echo "" echo "Available commands:" echo " dev - Start development environment" echo " prod - Start production environment" echo " build - Build images (with Bake if available)" echo " build-dev - Build development image" echo " build-prod - Build production image" echo " stop - Stop all services" echo " clean - Clean up containers and images" echo " logs - Show application logs" echo " shell - Open shell in running container" echo " help - Show this help" } # Parse command line arguments case "${1:-help}" in "dev") echo "๐Ÿ”ง Starting development environment..." docker-compose up --build ;; "prod") echo "๐Ÿš€ Starting production environment..." docker-compose --profile production up --build app-prod ;; "build") if docker buildx version &> /dev/null 2>&1; then echo "๐Ÿ—๏ธ Building all images with Docker Bake..." docker buildx bake --load else echo "๐Ÿ—๏ธ Building images with standard Docker build..." docker-compose build fi ;; "build-dev") if docker buildx version &> /dev/null 2>&1; then echo "๐Ÿ—๏ธ Building development image with Docker Bake..." docker buildx bake development --load else echo "๐Ÿ—๏ธ Building development image..." docker-compose build app fi ;; "build-prod") if docker buildx version &> /dev/null 2>&1; then echo "๐Ÿ—๏ธ Building production image with Docker Bake..." docker buildx bake production --load else echo "๐Ÿ—๏ธ Building production image..." docker-compose build app-prod fi ;; "stop") echo "๐Ÿ›‘ Stopping all services..." docker-compose down ;; "clean") echo "๐Ÿงน Cleaning up containers and images..." docker-compose down --rmi all --volumes --remove-orphans docker system prune -f ;; "logs") echo "๐Ÿ“‹ Showing application logs..." docker-compose logs -f app ;; "shell") echo "๐Ÿš Opening shell in running container..." docker-compose exec app sh ;; "help"|*) show_help ;; esac