version: '3.7' # 28/02/2026

###########################################################################
# P-Api - WhatsApp API powered by Intrategica
# VERSÃO: Imagem Docker Própria (recomendado para produção)
#
# IMPORTANTE: Altere TODAS as configurações marcadas com [ALTERAR]
#  Data : 31/12/2025
# PASSO EXTRA NECESSÁRIO:
#  https://papi.mundoautomatik.com
###########################################################################

services:
  pastorini_api:
    image: intrategica/papi-free:1.5.1
    hostname: "{{.Service.Name}}.{{.Task.Slot}}"

    volumes:
      - pastorini_sessions:/app/sessions
      - pastorini_media:/app/Media
      - api_code:/app  # Adicionando o volume para o código da API

    networks:
      - suaredeaqui  # sua rede aqui

    environment:
      NODE_ENV: production
      PORT: 3000
      PANEL_API_KEY: '123456'

      STORAGE_TYPE: postgres+redis
      POSTGRES_HOST: postgres_papi
      POSTGRES_PORT: 5432
      POSTGRES_DB: pastorini
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: '123456'
      POSTGRES_SSL: 'false'

      REDIS_HOST: redis_papi
      REDIS_PORT: 6379
      REDIS_PASSWORD: ''
      REDIS_DB: 0

      LICENSE_KEY: 2390145C-20252025-123456-123456 # sua licenca aqui
      
    ports:
      - '3000:3000'

    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M
      labels:
        - traefik.enable=true
        - traefik.http.routers.pastorini_api.rule=Host(`SEU DOMINIO AQUI`)  # SEU DOMINIO AQUI
        - traefik.http.routers.pastorini_api.entrypoints=websecure
        - traefik.http.routers.pastorini_api.tls.certresolver=letsencryptresolver
        - traefik.http.routers.pastorini_api.tls=true
        - traefik.http.routers.pastorini_api.service=pastorini_api
        - traefik.docker.network=suaredeaqui                                # SUA REDE AQUI
        - traefik.http.services.pastorini_api.loadbalancer.server.port=3000
        - traefik.http.services.pastorini_api.loadbalancer.passHostHeader=true
        
      update_config:
        parallelism: 1
        delay: 30s
        order: start-first
        failure_action: rollback

  redis_papi:
    image: redis:alpine
    hostname: "{{.Service.Name}}.{{.Task.Slot}}"
    networks:
      - suaredeaqui  # sua rede aqui
    volumes:
      - redis_data:/data
    ports:
      - "6382:6379"

  postgres_papi:
    image: postgres:13-alpine
    hostname: "{{.Service.Name}}.{{.Task.Slot}}"
    networks:
      - suaredeaqui  # sua rede aqui
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: '123456'
      POSTGRES_DB: pastorini
    ports:
      - "5436:5432"

volumes:
  pastorini_sessions:
  pastorini_media:
  redis_data:
  postgres_data:
  api_code:  # Volume para armazenar o código da API

networks:
  suaredeaqui:  # sua rede aqui
    external: false
    name: suaredeaqui  # sua rede aqui
