# =============================================================================
# Projeto Lotep - Orquestração Docker
# =============================================================================
# Este arquivo é o ponto central de controle da infraestrutura do projeto.
# Para iniciar o ambiente: docker-compose up -d
# =============================================================================

services:
  # ---------------------------------------------------------------------------
  # Servidor Web (Nginx)
  # ---------------------------------------------------------------------------
  nginx:
    build:
      context: .
      dockerfile: docker/nginx/Dockerfile
      args:
        UID: ${WWWUSER:-1002}
        GID: ${WWWGROUP:-1002}
    container_name: portal_sucesu_nginx
    restart: unless-stopped
    ports:
      - "0.0.0.0:10011:8000"
    volumes:
      # Montagem do diretório raiz para consistência com o PHP
      - .:/var/www/html
      # Configurações do Nginx
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/lotep.conf.template:/etc/nginx/templates/default.conf.template
      # Volume persistente para logs
      - portal_sucesu_nginx_logs:/var/log/nginx
    environment:
      - FORCE_HTTPS=${FORCE_HTTPS:-off}
    depends_on:
      php:
        condition: service_healthy
    networks:
      - portal_sucesu_network

  # ---------------------------------------------------------------------------
  # Aplicação PHP-FPM
  # ---------------------------------------------------------------------------
  php:
    user: "${WWWUSER:-1002}:${WWWGROUP:-1002}"
    build:
      context: .
      dockerfile: docker/php/Dockerfile
      args:
        APP_ENV: ${APP_ENV:-production}
        WWWGROUP: ${WWWGROUP:-1002}
        WWWUSER: ${WWWUSER:-1002}
    container_name: portal_sucesu_app
    restart: unless-stopped
    working_dir: /var/www/html
    volumes:
      # Montagem do diretório raiz para desenvolvimento
      - .:/var/www/html
      # Customização do PHP
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
      - ./docker/php/www.conf:/usr/local/etc/php-fpm.d/www.conf
      - ../public-v5v6-vendor/:/var/www/public-v5v6-vendor
    environment:
      # Configurações do Laravel
      APP_ENV: ${APP_ENV:-prod}
      APP_DEBUG: ${APP_DEBUG:-false}
      APP_KEY: ${APP_KEY}
      APP_URL: ${APP_URL:-http://localhost}

      # Banco de Dados
      DB_CONNECTION: ${DB_CONNECTION:-pgsql}
      DB_HOST: ${DB_HOST:-postgres}
      DB_PORT: ${DB_PORT:-5432}
      DB_DATABASE: ${DB_DATABASE:-sucesu}
      DB_USERNAME: ${DB_USERNAME:-default}
      DB_PASSWORD: ${DB_PASSWORD:-secret}

      # PHP Limits
      PHP_MEMORY_LIMIT: ${PHP_MEMORY_LIMIT:-512M}
    depends_on:
      postgres:
        condition: service_healthy
    networks:
      - portal_sucesu_network
    healthcheck:
      test: ["CMD-SHELL", "pidof php-fpm > /dev/null || exit 1"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 30s

  # ---------------------------------------------------------------------------
  # Banco de Dados (PostgreSQL 17)
  # ---------------------------------------------------------------------------
  postgres:
    image: postgres:17.10-alpine3.22@sha256:3c9fe01c436ddf61b7803781f677165d2eb0b5f16e1ff9b71787b25d596952f0
    container_name: portal_sucesu_database
    restart: unless-stopped
    volumes:
      - portal_sucesu_database:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: ${DB_DATABASE:-sucesu}
      POSTGRES_USER: ${DB_USERNAME:-default}
      POSTGRES_PASSWORD: ${DB_PASSWORD:-secret}
      POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
    networks:
      - portal_sucesu_network
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "pg_isready -U ${DB_USERNAME:-default} -d ${DB_DATABASE:-sucesu}",
        ]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

# -----------------------------------------------------------------------------
# Redes e Volumes
# -----------------------------------------------------------------------------
networks:
  portal_sucesu_network:

volumes:
  portal_sucesu_database:
  portal_sucesu_nginx_logs:
