blob: e5fea5eeeae96bc27e45d9c93f3ab5a45bc94991 [file] [log] [blame]
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: