services: # Redis redis: image: eqalpha/keydb ports: - "6379:6379" # MongoDB database: image: mongo command: ["--replSet", "rs0", "--bind_ip_all"] ports: - "27017:27017" volumes: - ./.data/db:/data/db - ./scripts/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro healthcheck: test: > mongosh --quiet --eval " try { const status = rs.status(); if (status.ok === 1 && status.members[0].stateStr === 'PRIMARY') { quit(0); } else { quit(1); } } catch (e) { quit(1); }" interval: 5s timeout: 5s retries: 10 start_period: 10s ulimits: nofile: soft: 65536 hard: 65536 # MinIO minio: image: minio/minio command: server /data environment: MINIO_ROOT_USER: minioautumn MINIO_ROOT_PASSWORD: minioautumn volumes: - ./.data/minio:/data ports: - "14009:9000" - "14010:9001" restart: always # Create buckets for minio. createbuckets: image: minio/mc depends_on: - minio entrypoint: > /bin/sh -c "while ! /usr/bin/mc ready minio; do /usr/bin/mc alias set minio http://minio:9000 minioautumn minioautumn; echo 'Waiting minio...' && sleep 1; done; /usr/bin/mc mb minio/revolt-uploads; exit 0;" # Rabbit rabbit: image: rabbitmq:4-management environment: RABBITMQ_DEFAULT_USER: rabbituser RABBITMQ_DEFAULT_PASS: rabbitpass volumes: - ./.data/rabbit:/var/lib/rabbitmq #- ./rabbit_plugins:/opt/rabbitmq/plugins/ #- ./rabbit_enabled_plugins:/etc/rabbitmq/enabled_plugins # uncomment this if you need to enable other plugins ports: - "5672:5672" - "15672:15672" # management UI, for development # Mock SMTP server maildev: image: maildev/maildev ports: - "14025:25" - "14080:8080" environment: MAILDEV_SMTP_PORT: 25 MAILDEV_WEB_PORT: 8080 MAILDEV_INCOMING_USER: smtp MAILDEV_INCOMING_PASS: smtp livekit: image: ghcr.io/stoatchat/livekit-server:v1.9.13 command: --config /etc/livekit.yml network_mode: "host" volumes: - ./livekit.yml:/etc/livekit.yml elasticsearch: image: elasticsearch:9.3.0 volumes: - ./.data/elasticsearch:/usr/share/elasticsearch/data ports: - 9200:9200 extra_hosts: - host.docker.internal:host-gateway - model-runner.docker.internal:host-gateway environment: - discovery.type=single-node - xpack.security.enabled=false - xpack.security.http.ssl.enabled=false - indices.id_field_data.enabled=true healthcheck: test: [ "CMD-SHELL", "curl --output /dev/null --silent --head --fail http://elasticsearch:9200", ] interval: 10s timeout: 10s retries: 30 kibana: image: kibana:9.3.1 ports: - 5601:5601 environment: ELASTICSEARCH_HOSTS: '["http://elasticsearch:9200"]'