| services: |
| |
| db: |
| image: mariadb:11.8 |
| container_name: airavata-db |
| restart: unless-stopped |
| environment: |
| MYSQL_ROOT_PASSWORD: rootpass |
| MYSQL_DATABASE: airavata |
| MYSQL_USER: airavata |
| MYSQL_PASSWORD: 123456 |
| volumes: |
| - db_data:/var/lib/mysql |
| - ./airavata-api/src/main/resources/conf/db/migration/airavata/V1__Baseline_schema.sql:/docker-entrypoint-initdb.d/01-schema.sql:ro |
| ports: |
| - "13306:3306" |
| healthcheck: |
| test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] |
| interval: 10s |
| timeout: 5s |
| retries: 5 |
| start_period: 30s |
| |
| rabbitmq: |
| image: rabbitmq:4.0-management |
| container_name: airavata-rabbitmq |
| restart: unless-stopped |
| environment: |
| RABBITMQ_DEFAULT_USER: airavata |
| RABBITMQ_DEFAULT_PASS: airavata |
| volumes: |
| - rabbitmq_data:/var/lib/rabbitmq |
| ports: |
| - "5672:5672" |
| - "15672:15672" |
| healthcheck: |
| test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"] |
| interval: 10s |
| timeout: 5s |
| retries: 5 |
| start_period: 20s |
| |
| zookeeper: |
| image: zookeeper:3.9 |
| container_name: airavata-zookeeper |
| restart: unless-stopped |
| volumes: |
| - zk_data:/data |
| - zk_logs:/datalog |
| ports: |
| - "2181:2181" |
| healthcheck: |
| test: ["CMD-SHELL", "curl -sf http://localhost:8080/commands/ruok || exit 1"] |
| interval: 10s |
| timeout: 5s |
| retries: 5 |
| start_period: 10s |
| |
| kafka: |
| image: apache/kafka:3.9.0 |
| container_name: airavata-kafka |
| restart: unless-stopped |
| environment: |
| KAFKA_NODE_ID: 1 |
| KAFKA_PROCESS_ROLES: broker,controller |
| KAFKA_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093 |
| KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 |
| KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER |
| KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT |
| KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093 |
| KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 |
| CLUSTER_ID: airavata-kafka-cluster-id-01 |
| volumes: |
| - kafka_data:/var/lib/kafka/data |
| ports: |
| - "9092:9092" |
| healthcheck: |
| test: ["CMD-SHELL", "/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092 > /dev/null 2>&1"] |
| interval: 10s |
| timeout: 10s |
| retries: 5 |
| start_period: 30s |
| |
| keycloak: |
| image: keycloak/keycloak:25.0 |
| container_name: airavata-keycloak |
| restart: unless-stopped |
| environment: |
| KEYCLOAK_ADMIN: admin |
| KEYCLOAK_ADMIN_PASSWORD: admin |
| volumes: |
| - ./conf/keycloak/realm-default.json:/opt/keycloak/data/import/realm-default.json:ro |
| - ./conf/keycloak/keycloak.conf:/opt/keycloak/conf/keycloak.conf:ro |
| command: ["start", "--import-realm"] |
| ports: |
| - "18080:18080" |
| healthcheck: |
| test: ["CMD-SHELL", "exec 3<>/dev/tcp/localhost/9000 && echo -e 'GET /health/ready HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3 | grep -q '200 OK'"] |
| interval: 10s |
| timeout: 5s |
| retries: 10 |
| start_period: 60s |
| |
| # Dev tools (start with: docker compose --profile tools up -d) |
| |
| adminer: |
| profiles: [tools] |
| image: adminer:4 |
| container_name: airavata-adminer |
| restart: unless-stopped |
| ports: |
| - "18088:8080" |
| depends_on: |
| db: |
| condition: service_healthy |
| |
| volumes: |
| db_data: |
| rabbitmq_data: |
| zk_data: |
| zk_logs: |
| kafka_data: |