227 lines
7.1 KiB
YAML
227 lines
7.1 KiB
YAML
version: "3.7"
|
|
|
|
services:
|
|
# --------------------------- DATABASE (PostgreSQL) --------------------------- #
|
|
# Serviço de banco de dados relacional utilizado por Odoo e Evolution para persistência de dados.
|
|
db:
|
|
image: postgres:16
|
|
user: root
|
|
environment:
|
|
- POSTGRES_USER= # Usuário do banco de dados (ex: admin)
|
|
- POSTGRES_PASSWORD= # Senha do banco de dados
|
|
- POSTGRES_DB= # Nome do banco de dados (ex: postgres)
|
|
volumes:
|
|
- db_data:/var/lib/postgresql/data
|
|
networks:
|
|
- netpevo
|
|
deploy:
|
|
mode: replicated
|
|
replicas: 1
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
resources:
|
|
limits:
|
|
cpus: "1"
|
|
memory: 1024M
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
# Remova a porta abaixo se for usar Traefik para expor o serviço
|
|
#ports:
|
|
# - 5432:5432
|
|
|
|
# --------------------------- ODOO (DiscussHub) --------------------------- #
|
|
# ERP Odoo customizado com DiscussHub, plataforma de gestão empresarial e comunicação integrada.
|
|
odoo:
|
|
image: discusshub/discuss_hub:latest
|
|
depends_on:
|
|
- db
|
|
tty: true
|
|
command: odoo -d odoo -i discuss_hub -u discuss_hub
|
|
environment:
|
|
- ODOO_RC=/etc/odoo/odoo.conf
|
|
- HOST=db
|
|
- USER= # Usuário do banco de dados (ex: admin)
|
|
- PASSWORD= # Senha do banco de dados
|
|
- ADMIN_PASSWORD= # Senha do usuário admin do Odoo
|
|
- SMTP_SERVER=mailpit
|
|
- SMTP_PORT=1025
|
|
- EVOLUTION_URL=http://evolution:8080
|
|
- EVOLUTION_API_KEY= # Chave de API do Evolution
|
|
- EVOLUTION_ODOO_URL=http://odoo:8069
|
|
volumes:
|
|
- odoo_conf:/etc/odoo
|
|
- odoo_data:/var/lib/odoo
|
|
networks:
|
|
- netpevo
|
|
deploy:
|
|
mode: replicated
|
|
replicas: 1
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
resources:
|
|
limits:
|
|
cpus: "2"
|
|
memory: 2048M
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.odoo.rule=Host(`odoo.seudominio.com.br`) # Altere para seu domínio
|
|
- traefik.http.services.odoo.loadbalancer.server.port=8069
|
|
- traefik.http.routers.odoo.service=odoo
|
|
- traefik.http.routers.odoo.tls.certresolver=letsencryptresolver
|
|
- traefik.http.routers.odoo.entrypoints=websecure
|
|
- traefik.http.routers.odoo.tls=true
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
# Remova a porta abaixo se for usar Traefik para expor o serviço
|
|
#ports:
|
|
# - "8069:8069"
|
|
|
|
# --------------------------- EVOLUTION API --------------------------- #
|
|
# API Evolution: plataforma de automação, integração e comunicação multicanal (WhatsApp, etc).
|
|
evolution:
|
|
image: evoapicloud/evolution-api:v2.3.0
|
|
depends_on:
|
|
- redis
|
|
- db
|
|
volumes:
|
|
- evolution_instances:/evolution/instances
|
|
networks:
|
|
- netpevo
|
|
deploy:
|
|
mode: replicated
|
|
replicas: 1
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
resources:
|
|
limits:
|
|
cpus: "1"
|
|
memory: 1024M
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.evolution.rule=Host(`evolution.seudominio.com.br`) # Altere para seu domínio
|
|
- traefik.http.services.evolution.loadbalancer.server.port=8080
|
|
- traefik.http.routers.evolution.service=evolution
|
|
- traefik.http.routers.evolution.tls.certresolver=letsencryptresolver
|
|
- traefik.http.routers.evolution.entrypoints=websecure
|
|
- traefik.http.routers.evolution.tls=true
|
|
environment:
|
|
- SERVER_URL=http://localhost:8080
|
|
- DATABASE_PROVIDER=postgresql
|
|
- DATABASE_CONNECTION_URI= # URI de conexão do banco (ex: postgresql://usuario:senha@db:5432/nome_db?schema=public)
|
|
- DATABASE_SAVE_DATA_INSTANCE=true
|
|
- DATABASE_SAVE_DATA_NEW_MESSAGE=true
|
|
- DATABASE_SAVE_MESSAGE_UPDATE=true
|
|
- DATABASE_SAVE_DATA_CONTACTS=true
|
|
- DATABASE_SAVE_DATA_CHATS=true
|
|
- DATABASE_SAVE_DATA_LABELS=true
|
|
- DATABASE_SAVE_DATA_HISTORIC=true
|
|
- DATABASE_SAVE_IS_ON_WHATSAPP=true
|
|
- DATABASE_SAVE_IS_ON_WHATSAPP_DAYS=14
|
|
- DATABASE_DELETE_MESSAGE=true
|
|
- CACHE_REDIS_ENABLED=true
|
|
- CACHE_REDIS_URI=redis://redis:6379/6
|
|
- CACHE_REDIS_TTL=604800
|
|
- CACHE_REDIS_PREFIX_KEY=evolution
|
|
- CACHE_REDIS_SAVE_INSTANCES=false
|
|
- CACHE_LOCAL_ENABLED=false
|
|
- CONFIG_SESSION_PHONE_CLIENT=Conexao Azul
|
|
- CONFIG_SESSION_PHONE_NAME=Chrome
|
|
- CONFIG_SESSION_PHONE_VERSION=2.3000.1020885143
|
|
- AUTHENTICATION_API_KEY= # Chave de API de autenticação
|
|
- WA_BUSINESS_TOKEN_WEBHOOK=evolution
|
|
- WA_BUSINESS_URL=https://graph.facebook.com
|
|
- WA_BUSINESS_VERSION=v21.0
|
|
- WA_BUSINESS_LANGUAGE=pt_BR
|
|
- OPENAI_ENABLED=true
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
# Remova a porta abaixo se for usar Traefik para expor o serviço
|
|
#ports:
|
|
# - 8080:8080
|
|
|
|
# --------------------------- REDIS --------------------------- #
|
|
# Redis: banco de dados em memória utilizado como cache e para filas de mensagens pela Evolution API.
|
|
redis:
|
|
image: redis:latest
|
|
command: redis-server --port 6379 --appendonly yes
|
|
volumes:
|
|
- redis_data:/data
|
|
networks:
|
|
- netpevo
|
|
deploy:
|
|
mode: replicated
|
|
replicas: 1
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
resources:
|
|
limits:
|
|
cpus: "0.5"
|
|
memory: 512M
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
# Remova a porta abaixo se for usar Traefik para expor o serviço
|
|
#ports:
|
|
# - 6379:6379
|
|
|
|
# --------------------------- MAILPIT --------------------------- #
|
|
# Mailpit: servidor SMTP fake para testes de envio de e-mails em ambiente de desenvolvimento.
|
|
mailpit:
|
|
image: docker.io/axllent/mailpit:latest
|
|
networks:
|
|
- netpevo
|
|
deploy:
|
|
mode: replicated
|
|
replicas: 1
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
resources:
|
|
limits:
|
|
cpus: "0.5"
|
|
memory: 512M
|
|
# Remova as portas abaixo se for usar Traefik para expor o serviço
|
|
#ports:
|
|
# - "8025:8025"
|
|
# - "1025:1025"
|
|
|
|
# --------------------------- VOLUMES EXTERNOS --------------------------- #
|
|
# Volumes externos para persistência dos dados dos serviços. Devem ser criados previamente no cluster Swarm.
|
|
volumes:
|
|
db_data:
|
|
external: true
|
|
name: db_data
|
|
odoo_data:
|
|
external: true
|
|
name: odoo_data
|
|
odoo_conf:
|
|
external: true
|
|
name: odoo_conf
|
|
evolution_instances:
|
|
external: true
|
|
name: evolution_instances
|
|
redis_data:
|
|
external: true
|
|
name: redis_data
|
|
|
|
# --------------------------- REDE OVERLAY EXTERNA --------------------------- #
|
|
# Rede overlay compartilhada entre todos os serviços da stack, permitindo comunicação interna segura e isolada no cluster Swarm.
|
|
networks:
|
|
netpevo:
|
|
external: true
|
|
name: netpevo # Rede overlay para comunicação interna entre os serviços da stack (ajuste conforme sua infraestrutura) |