# Comments are provided throughout this file to help you get started. # If you need more help, visit the Docker Compose reference guide at # https://docs.docker.com/go/compose-spec-reference/ # Here the instructions define your application as a service called "server". # This service is built from the Dockerfile in the current directory. # You can add other services your application may depend on here, such as a # database or a cache. For examples, see the Awesome Compose repository: # https://github.com/docker/awesome-compose x-common-variables: &common-variables DB_HOST: minty.ask-eve-ai-local.com DB_USER: luke DB_PASS: 'Skywalker!' DB_NAME: eveai_test DB_PORT: '5432' FLASK_ENV: test FLASK_DEBUG: true SECRET_KEY: '31f87c24d691a5ee8e6a36eb14bf7ba6a19ff53ab1b37ecba140d0f7e577e41' SECURITY_PASSWORD_SALT: '331694859419473264015565568764321607531' MAIL_USERNAME: evie_test@askeveai.be MAIL_PASSWORD: '8pF6AucbXi9Rt6R' MAIL_SERVER: mail.flow-it.net MAIL_PORT: 465 REDIS_URL: redis REDIS_PORT: '6379' FLOWER_USER: 'Felucia' FLOWER_PASSWORD: 'Jungles' MISTRAL_API_KEY: 'qunKSaeOkFfLteNiUO77RCsXXSLK65Ec' JWT_SECRET_KEY: '7e9c8b3a215f4d6e90712c5d8f3b97a60e482c15f39a7d68bcd45910ef23a784' API_ENCRYPTION_KEY: 'kJ7N9p3IstyRGkluYTryM8ZMnfUBSXWR3TCfDG9VLc4=' MINIO_ENDPOINT: minio:9000 MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin NGINX_SERVER_NAME: 'localhost http://macstudio.ask-eve-ai-local.com/' CREWAI_STORAGE_DIR: "/app/crewai_storage" PUSH_GATEWAY_HOST: "pushgateway" PUSH_GATEWAY_PORT: "9091" COMPONENT_NAME: ${COMPONENT_NAME:-unknown} SW_EMAIL_ACCESS_KEY: "SCWFMQ871RE4XGF04SW0" SW_EMAIL_SECRET_KEY: "ec84604c-e2d4-4b0d-a120-40420693f42a" SW_EMAIL_SENDER: "admin_test@mail.askeveai.be" SW_EMAIL_NAME: "Evie Admin (test)" SW_PROJECT: "f282f55a-ea52-4538-a979-5bcb890717ab" name: eveai_test services: nginx: image: ${REGISTRY_PREFIX:-}josakola/nginx:latest ports: - 4080:80 environment: <<: *common-variables volumes: - test_eveai_logs:/var/log/nginx depends_on: - eveai_app - eveai_api - eveai_chat_client networks: - eveai-test-network restart: unless-stopped eveai_app: image: ${REGISTRY_PREFIX:-}josakola/eveai_app:latest ports: - 4001:8080 expose: - 8000 environment: <<: *common-variables COMPONENT_NAME: eveai_app ROLE: web PORT: 8080 WORKERS: 2 # Test: hogere concurrency WORKER_CLASS: gevent WORKER_CONN: 100 LOGLEVEL: info # Lowercase voor gunicorn MAX_REQUESTS: 1000 MAX_REQUESTS_JITTER: 100 volumes: - test_eveai_logs:/app/logs depends_on: redis: condition: service_healthy minio: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/healthz/ready"] interval: 30s timeout: 10s retries: 3 start_period: 30s networks: - eveai-test-network restart: unless-stopped eveai_workers: image: ${REGISTRY_PREFIX:-}josakola/eveai_workers:latest expose: - 8000 environment: <<: *common-variables COMPONENT_NAME: eveai_workers ROLE: worker CELERY_CONCURRENCY: 2 # Test: hogere concurrency CELERY_LOGLEVEL: INFO # Uppercase voor celery CELERY_MAX_TASKS_PER_CHILD: 1000 CELERY_PREFETCH: 1 volumes: - test_eveai_logs:/app/logs depends_on: redis: condition: service_healthy minio: condition: service_healthy networks: - eveai-test-network restart: unless-stopped eveai_chat_client: image: ${REGISTRY_PREFIX:-}josakola/eveai_chat_client:latest ports: - 4004:8080 expose: - 8000 environment: <<: *common-variables COMPONENT_NAME: eveai_chat_client ROLE: web PORT: 8080 WORKERS: 2 # Test: hogere concurrency WORKER_CLASS: gevent WORKER_CONN: 100 LOGLEVEL: info # Lowercase voor gunicorn MAX_REQUESTS: 1000 MAX_REQUESTS_JITTER: 100 volumes: - test_eveai_logs:/app/logs depends_on: redis: condition: service_healthy minio: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/healthz/ready"] interval: 30s timeout: 10s retries: 3 start_period: 30s networks: - eveai-test-network restart: unless-stopped eveai_chat_workers: image: ${REGISTRY_PREFIX:-}josakola/eveai_chat_workers:latest expose: - 8000 environment: <<: *common-variables COMPONENT_NAME: eveai_chat_workers ROLE: worker CELERY_CONCURRENCY: 2 # Test: hogere concurrency CELERY_LOGLEVEL: INFO # Uppercase voor celery CELERY_MAX_TASKS_PER_CHILD: 1000 CELERY_PREFETCH: 1 volumes: - test_eveai_logs:/app/logs depends_on: redis: condition: service_healthy networks: - eveai-test-network restart: unless-stopped eveai_api: image: ${REGISTRY_PREFIX:-}josakola/eveai_api:latest ports: - 4003:8080 expose: - 8000 environment: <<: *common-variables COMPONENT_NAME: eveai_api ROLE: web PORT: 8080 WORKERS: 2 # Test: hogere concurrency WORKER_CLASS: gevent WORKER_CONN: 100 LOGLEVEL: info # Lowercase voor gunicorn MAX_REQUESTS: 1000 MAX_REQUESTS_JITTER: 100 volumes: - test_eveai_logs:/app/logs depends_on: redis: condition: service_healthy minio: condition: service_healthy healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:8080/healthz/ready" ] interval: 30s timeout: 10s retries: 3 start_period: 30s networks: - eveai-test-network restart: unless-stopped # eveai_beat: # image: ${REGISTRY_PREFIX:-}josakola/eveai_beat:latest # environment: # <<: *common-variables # COMPONENT_NAME: eveai_beat # ROLE: beat # CELERY_LOGLEVEL: INFO # Uppercase voor celery # volumes: # - test_eveai_logs:/app/logs # depends_on: # redis: # condition: service_healthy # networks: # - eveai-test-network # restart: unless-stopped eveai_entitlements: image: ${REGISTRY_PREFIX:-}josakola/eveai_entitlements:latest expose: - 8000 environment: <<: *common-variables COMPONENT_NAME: eveai_entitlements ROLE: worker CELERY_CONCURRENCY: 2 # Test: hogere concurrency CELERY_LOGLEVEL: INFO # Uppercase voor celery CELERY_MAX_TASKS_PER_CHILD: 1000 CELERY_PREFETCH: 1 volumes: - test_eveai_logs:/app/logs depends_on: redis: condition: service_healthy minio: condition: service_healthy networks: - eveai-test-network restart: unless-stopped redis: image: redis:7.2.5 restart: unless-stopped ports: - "4006:6379" volumes: - test_redisdata:/data healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 10s timeout: 5s retries: 5 networks: - eveai-test-network flower: image: ${REGISTRY_PREFIX:-}josakola/flower:latest environment: <<: *common-variables ports: - "4007:5555" depends_on: - redis networks: - eveai-test-network restart: unless-stopped minio: image: minio/minio ports: - "4008:9000" - "4009:9001" expose: - 9000 volumes: - test_miniodata:/data - test_minioconfig:/root/.minio environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin} command: server /data --console-address ":9001" healthcheck: test: [ "CMD", "mc", "ready", "local" ] interval: 30s timeout: 20s retries: 3 start_period: 30s networks: - eveai-test-network restart: unless-stopped prometheus: image: ${REGISTRY_PREFIX:-}josakola/prometheus:${EVEAI_VERSION:-latest} ports: - "4010:9090" volumes: - test_prometheusdata:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--web.enable-lifecycle' restart: unless-stopped networks: - eveai-test-network pushgateway: image: prom/pushgateway:latest restart: unless-stopped ports: - "4011:9091" networks: - eveai-test-network grafana: image: ${REGISTRY_PREFIX:-}josakola/grafana:${EVEAI_VERSION:-latest} ports: - "4012:3000" volumes: - test_grafanadata:/var/lib/grafana environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin - GF_USERS_ALLOW_SIGN_UP=false restart: unless-stopped depends_on: - prometheus networks: - eveai-test-network networks: eveai-test-network: driver: bridge volumes: test_eveai_logs: test_redisdata: test_miniodata: test_minioconfig: test_prometheusdata: test_grafanadata: