# Meezi admin stack — overlay on top of main compose
#
# Requires main stack (postgres + redis) to be running.
# Usage:
#   docker compose -f docker-compose.yml -f docker-compose.admin.yml up -d --build
#
# URLs:
#   Admin panel  http://SERVER:3102/fa/admin/login
#   Admin API    http://SERVER:5081/swagger

services:
  admin-api:
    build:
      context: .
      dockerfile: docker/admin-api/Dockerfile
      extra_hosts:
        - "mirror:host-gateway"
      args:
        DOTNET_SDK_IMAGE: ${DOTNET_SDK_IMAGE:-171.22.25.73:5002/dotnet/sdk:10.0}
        DOTNET_ASPNET_IMAGE: ${DOTNET_ASPNET_IMAGE:-mcr-mirror.liara.ir/dotnet/aspnet:10.0}
    container_name: meezi-admin-api
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    environment:
      ASPNETCORE_ENVIRONMENT: "${ASPNETCORE_ENVIRONMENT:-Development}"
      ASPNETCORE_URLS: http://+:8080
      RUN_MIGRATIONS: "false"
      ConnectionStrings__DefaultConnection: "${DB_CONNECTION_STRING:-Host=postgres;Port=5432;Database=meezi;Username=meezi;Password=meezi_local_pass}"
      ConnectionStrings__Redis: redis:6379
      Jwt__Key: "${JWT_KEY:-dev-jwt-key-CHANGE-THIS-IN-PRODUCTION-min32chars}"
      Cors__Origins__0: "${CORS_ADMIN_ORIGIN_0:-http://localhost:3102}"
      Cors__Origins__1: "${CORS_ORIGIN_0:-http://localhost:3101}"
      Kavenegar__ApiKey: "${KAVENEGAR_API_KEY:-}"
    ports:
      - "${ADMIN_API_PORT:-5081}:8080"
    healthcheck:
      test: ["CMD-SHELL", "bash -c 'cat </dev/null >/dev/tcp/127.0.0.1/8080' || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 12
      start_period: 40s

  admin-web:
    build:
      context: .
      dockerfile: docker/admin-web/Dockerfile
      extra_hosts:
        - "mirror:host-gateway"
      args:
        NODE_IMAGE: ${NODE_IMAGE:-171.22.25.73:5000/library/node:20-alpine}
        NPM_REGISTRY: ${NPM_REGISTRY:-http://mirror:8081/repository/npm-group/}
        NEXT_PUBLIC_ADMIN_API_URL: ${NEXT_PUBLIC_ADMIN_API_URL:-http://localhost:5081}
    container_name: meezi-admin-web
    restart: unless-stopped
    depends_on:
      admin-api:
        condition: service_healthy
    environment:
      PORT: "3000"
      HOSTNAME: 0.0.0.0
    ports:
      - "${ADMIN_WEB_PORT:-3102}:3000"
