services: # Redis redis: image: eqalpha/keydb ports: - "6379:6379" # MongoDB database: image: mongo command: mongod --replSet rs0 ports: - "27017:27017" volumes: - ./.data/db:/data/db extra_hosts: - "host.docker.internal:host-gateway" healthcheck: test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'127.0.0.1:27017'}]}) }" | mongosh --port 27017 --quiet interval: 5s timeout: 30s start_period: 0s start_interval: 1s retries: 30 ulimits: nofile: soft: 65536 hard: 65536 # MinIO minio: image: firstfinger/minio:latest #command: server /data environment: MINIO_ROOT_USER: minioautumn MINIO_ROOT_PASSWORD: minioautumn MINIO_REGION: minio 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"]'