All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m20s
133 lines
3.3 KiB
YAML
133 lines
3.3 KiB
YAML
version: "3.7"
|
|
|
|
##########################################################
|
|
# STACK COMPLETA: Krayin CRM + MySQL + Redis
|
|
##########################################################
|
|
|
|
services:
|
|
# ===== KRAYIN CRM =====
|
|
crm:
|
|
image: gitea.blyzer.com.br/blyzer/growup-crm:latest
|
|
ports:
|
|
- "8090:80" # Ajuste a porta externa conforme necessário
|
|
volumes:
|
|
- growup_data:/var/www/html/storage
|
|
- growup_public:/var/www/html/public/storage
|
|
networks:
|
|
- network_public
|
|
environment:
|
|
- APP_ENV=${APP_ENV:-production}
|
|
- APP_DEBUG=${APP_DEBUG:-false}
|
|
- APP_URL=${APP_URL}
|
|
- DB_CONNECTION=${DB_CONNECTION:-mysql}
|
|
- DB_HOST=${DB_HOST:-mysql}
|
|
- DB_PORT=${DB_PORT:-3306}
|
|
- DB_DATABASE=${DB_DATABASE:-growup}
|
|
- DB_USERNAME=${DB_USERNAME:-growup}
|
|
- DB_PASSWORD=${DB_PASSWORD}
|
|
- REDIS_HOST=${REDIS_HOST:-redis}
|
|
- REDIS_PORT=${REDIS_PORT:-6379}
|
|
depends_on:
|
|
- mysql
|
|
- redis
|
|
deploy:
|
|
mode: replicated
|
|
replicas: 1
|
|
update_config:
|
|
order: start-first
|
|
failure_action: rollback
|
|
delay: 10s
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
|
|
# ===== MYSQL =====
|
|
mysql:
|
|
image: percona/percona-server:8.0
|
|
environment:
|
|
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
|
|
- MYSQL_DATABASE=${DB_DATABASE:-growup}
|
|
- MYSQL_USER=${DB_USERNAME:-growup}
|
|
- MYSQL_PASSWORD=${DB_PASSWORD}
|
|
- TZ=America/Sao_Paulo
|
|
networks:
|
|
- network_public
|
|
volumes:
|
|
- mysql_data:/var/lib/mysql
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
resources:
|
|
limits:
|
|
cpus: "1"
|
|
memory: 1024M
|
|
command:
|
|
[
|
|
"--character-set-server=utf8mb4",
|
|
"--collation-server=utf8mb4_general_ci",
|
|
"--sql-mode=",
|
|
"--default-authentication-plugin=mysql_native_password",
|
|
"--max-allowed-packet=512MB",
|
|
"--expire_logs_days=7",
|
|
"--max_binlog_size=100M",
|
|
]
|
|
|
|
# ===== BACKUP MYSQL =====
|
|
backup-mysql:
|
|
image: fradelg/mysql-cron-backup
|
|
deploy:
|
|
replicas: 1
|
|
restart_policy:
|
|
condition: on-failure
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
environment:
|
|
MYSQL_HOST: mysql
|
|
MYSQL_USER: root
|
|
MYSQL_PASS: ${DB_PASSWORD}
|
|
CRON_TIME: "55 2 * * *" # Roda todo dia exatamente às 02:55 da manhã
|
|
MAX_BACKUPS: 3 # Mantém apenas os 3 últimos dias
|
|
INIT_BACKUP: "1" # Faz um backup imediatamente ao ligar o container
|
|
volumes:
|
|
- /opt/backups_db/growup-multi:/backup
|
|
networks:
|
|
- network_public
|
|
|
|
# ===== REDIS =====
|
|
redis:
|
|
image: redis:latest
|
|
command: ["redis-server", "--appendonly", "yes", "--port", "6379"]
|
|
volumes:
|
|
- redis_data:/data
|
|
networks:
|
|
- network_public
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
resources:
|
|
limits:
|
|
cpus: "0.5"
|
|
memory: 1024M
|
|
|
|
networks:
|
|
network_public:
|
|
external: true
|
|
name: network_public
|
|
|
|
volumes:
|
|
growup_data:
|
|
external: true
|
|
name: growup_data
|
|
growup_public:
|
|
external: true
|
|
name: growup_public
|
|
mysql_data:
|
|
external: true
|
|
name: mysql_data
|
|
redis_data:
|
|
external: true
|
|
name: redis_data
|