#!/usr/bin/env bash
set -euo pipefail

# Ensure docker compose is available
if ! command -v docker &> /dev/null; then
  echo "Docker is not installed. Please install Docker first."
  exit 1
fi

# Pull images and start services
docker compose pull || true
docker compose up -d

# Install PHP dependencies (production)
docker compose exec -T laravel.test composer install --no-dev --optimize-autoloader

# Run migrations
docker compose exec -T laravel.test php artisan migrate --force

# Build frontend assets
docker compose exec -T laravel.test npm ci
docker compose exec -T laravel.test npm run build

# Storage symlink
docker compose exec -T laravel.test php artisan storage:link || true

# Optimize caches
docker compose exec -T laravel.test php artisan optimize:clear
docker compose exec -T laravel.test php artisan config:cache
docker compose exec -T laravel.test php artisan route:cache
docker compose exec -T laravel.test php artisan view:cache

echo "Docker deploy complete. App should be available at ${APP_URL:-http://localhost:8000}"
