#!/usr/bin/env bash # Check Docker toolchain: docker, docker compose, colima (macOS). # Usage: ./scripts/check-docker-toolchain.sh set -euo pipefail RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' ok() { echo -e " ${GREEN}✓${NC} $1"; } warn() { echo -e " ${YELLOW}!${NC} $1"; } fail() { echo -e " ${RED}✗${NC} $1"; } IS_MAC=false [[ "$(uname)" == "Darwin" ]] && IS_MAC=true echo "=== Docker Toolchain Check ===" echo "" # ─── Docker ──────────────────────────────────────────────────────────── echo "Docker:" if command -v docker &>/dev/null; then docker_ver=$(docker --version 2>/dev/null) ok "docker found: $docker_ver" # Check if docker daemon is running if docker info &>/dev/null; then ok "docker daemon is running" else fail "docker daemon is not running" if $IS_MAC && command -v colima &>/dev/null; then echo " Try: colima start" elif $IS_MAC; then echo " Start Docker Desktop or install colima: brew install colima" else echo " Try: sudo systemctl start docker" fi fi else fail "docker not found" if command -v brew &>/dev/null; then echo " Install: brew install --cask docker (Docker Desktop) or brew install docker" else echo " Install: https://docs.docker.com/engine/install/" fi fi echo "" # ─── Docker Compose ──────────────────────────────────────────────────── echo "Docker Compose:" if docker compose version &>/dev/null 2>&1; then compose_ver=$(docker compose version 2>/dev/null | head -1) ok "docker compose plugin found: $compose_ver" elif command -v docker-compose &>/dev/null; then compose_ver=$(docker-compose --version 2>/dev/null) ok "docker-compose found: $compose_ver" else fail "docker compose not found" if command -v brew &>/dev/null; then echo " Install: brew install docker-compose (legacy) or ensure Docker Desktop includes the plugin" else echo " Install: https://docs.docker.com/compose/install/" fi fi echo "" # ─── Colima (macOS only) ─────────────────────────────────────────────── if $IS_MAC; then echo "Colima (macOS):" if command -v colima &>/dev/null; then colima_ver=$(colima version 2>/dev/null) ok "colima found: $colima_ver" # Check if colima is running if colima status 2>/dev/null | grep -q "Running"; then ok "colima is running" else warn "colima is not running" echo " Start: colima start" fi # Check if docker context is set to colima if docker context inspect 2>/dev/null | grep -q "colima"; then ok "docker context is set to colima" else warn "docker context may not be set to colima" echo " Switch: docker context use colima" fi else warn "colima not found (alternative to Docker Desktop for macOS)" if command -v brew &>/dev/null; then echo " Install: brew install colima" fi echo " Note: Not required if using Docker Desktop" fi echo "" fi # ─── Docker Buildx ───────────────────────────────────────────────────── echo "Docker Buildx:" if docker buildx version &>/dev/null 2>&1; then buildx_ver=$(docker buildx version 2>/dev/null) ok "docker buildx found: $buildx_ver" else warn "docker buildx not found (needed for multi-platform builds)" if command -v brew &>/dev/null; then echo " Install: brew install docker-buildx" fi fi echo "" echo "=== Docker toolchain check complete ==="