diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..39bee99 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,86 @@ +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: