#!/bin/bash # ============================================================================= # Admin Service - Individual Deployment Script # ============================================================================= set -e SERVICE_NAME="admin-service" CONTAINER_NAME="rwa-admin-service" IMAGE_NAME="services-admin-service" PORT=3010 # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${BLUE}[INFO]${NC} $1"; } log_success() { echo -e "${GREEN}[OK]${NC} $1"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } log_error() { echo -e "${RED}[ERROR]${NC} $1"; } # Get script directory SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SERVICES_DIR="$(dirname "$SCRIPT_DIR")" # Load environment if [ -f "$SERVICES_DIR/.env" ]; then export $(cat "$SERVICES_DIR/.env" | grep -v '^#' | xargs) fi case "$1" in build) log_info "Building $SERVICE_NAME..." docker build -t "$IMAGE_NAME" "$SCRIPT_DIR" log_success "$SERVICE_NAME built successfully" ;; build-no-cache) log_info "Building $SERVICE_NAME (no cache)..." docker build --no-cache -t "$IMAGE_NAME" "$SCRIPT_DIR" log_success "$SERVICE_NAME built successfully" ;; start) log_info "Starting $SERVICE_NAME..." cd "$SERVICES_DIR" docker compose up -d "$SERVICE_NAME" log_success "$SERVICE_NAME started" ;; stop) log_info "Stopping $SERVICE_NAME..." docker stop "$CONTAINER_NAME" 2>/dev/null || true docker rm "$CONTAINER_NAME" 2>/dev/null || true log_success "$SERVICE_NAME stopped" ;; restart) $0 stop $0 start ;; logs) docker logs -f "$CONTAINER_NAME" ;; logs-tail) docker logs --tail 100 "$CONTAINER_NAME" ;; status) if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then log_success "$SERVICE_NAME is running" docker ps --filter "name=$CONTAINER_NAME" --format "table {{.Status}}\t{{.Ports}}" else log_warn "$SERVICE_NAME is not running" fi ;; shell) log_info "Entering $SERVICE_NAME container shell..." docker exec -it "$CONTAINER_NAME" sh ;; migrate) log_info "Running database migrations for $SERVICE_NAME..." docker exec "$CONTAINER_NAME" npx prisma migrate deploy log_success "Migrations completed" ;; migrate-dev) log_info "Running dev migrations for $SERVICE_NAME..." docker exec -it "$CONTAINER_NAME" npx prisma migrate dev log_success "Dev migrations completed" ;; clean) log_warn "Cleaning $SERVICE_NAME (removing container and volumes)..." $0 stop docker volume rm "${SERVICE_NAME}_node_modules" 2>/dev/null || true log_success "$SERVICE_NAME cleaned" ;; *) echo "Usage: $0 {build|build-no-cache|start|stop|restart|logs|logs-tail|status|shell|migrate|migrate-dev|clean}" echo "" echo "Commands:" echo " build - Build Docker image" echo " build-no-cache - Build Docker image without cache" echo " start - Start service" echo " stop - Stop service" echo " restart - Restart service" echo " logs - Follow logs" echo " logs-tail - Show last 100 lines of logs" echo " status - Check service status" echo " shell - Enter container shell" echo " migrate - Run database migrations (production)" echo " migrate-dev - Run database migrations (development)" echo " clean - Remove container and volumes" exit 1 ;; esac