mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 13:36:59 +00:00
128 lines
3.0 KiB
YAML
128 lines
3.0 KiB
YAML
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"]'
|