version: '3.9' services: postgres: image: postgres:15-alpine container_name: postgres_bots restart: always environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} N8N_DB_NAME: ${N8N_DB_NAME} EVOLUTION_DB_NAME: ${EVOLUTION_DB_NAME} volumes: - postgres_data:/var/lib/postgresql/data - ./init-db.sh:/docker-entrypoint-initdb.d/init-db.sh networks: - app_network healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 5s timeout: 5s retries: 5 redis: image: 'redis:7' container_name: mi_stack_redis restart: always command: - redis-server - '--requirepass' - '${REDIS_PASSWORD}' volumes: - 'redis_data:/data' networks: - app_network n8n: image: docker.n8n.io/n8nio/n8n container_name: mi_stack_n8n restart: always environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=${N8N_DB_NAME} - DB_POSTGRESDB_USER=${POSTGRES_USER} - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} - N8N_HOST=${N8N_SUBDOMAIN}.${DOMAIN_NAME} - N8N_PORT=5678 - N8N_PROTOCOL=https - WEBHOOK_URL=https://${N8N_SUBDOMAIN}.${DOMAIN_NAME}/ - NODE_ENV=production - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} volumes: - 'n8n_data:/home/node/.n8n' networks: - app_network depends_on: postgres: condition: service_healthy evolution-api: image: 'atendai/evolution-api:v2.1.1' container_name: mi_stack_evolution_api restart: always environment: - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${EVOLUTION_DB_NAME} - DATABASE_PROVIDER=postgresql - CACHE_REDIS_ENABLED=true - CACHE_REDIS_URI=redis://:${REDIS_PASSWORD}@redis:6379 - AUTHENTICATION_API_KEY=${EVOLUTION_API_KEY} - SERVER_URL=https://${EVOLUTION_SUBDOMAIN}.${DOMAIN_NAME} - DATABASE_SAVE_DATA_INSTANCE=true volumes: - 'evolution_instances:/evolution/instances' networks: - app_network depends_on: postgres: condition: service_healthy redis: condition: service_started networks: app_network: name: mi_stack_network volumes: postgres_data: redis_data: n8n_data: evolution_instances: