diff --git a/docker-compose2.yml b/docker-compose2.yml new file mode 100644 index 0000000..bc44a9e --- /dev/null +++ b/docker-compose2.yml @@ -0,0 +1,214 @@ +name: stoat + +services: + # MongoDB: Database + database: + image: docker.io/mongo + restart: always + volumes: + - ./data/db:/data/db + healthcheck: + test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet + interval: 10s + timeout: 10s + retries: 5 + start_period: 10s + + # Redis: Event message broker & KV store + redis: + image: docker.io/eqalpha/keydb + restart: always + + # RabbitMQ: Internal message broker + rabbit: + image: docker.io/rabbitmq:4 + restart: always + environment: + RABBITMQ_DEFAULT_USER: rabbituser + RABBITMQ_DEFAULT_PASS: rabbitpass + volumes: + - ./data/rabbit:/var/lib/rabbitmq + healthcheck: + test: rabbitmq-diagnostics -q ping + interval: 10s + timeout: 10s + retries: 3 + start_period: 20s + + # MinIO: S3-compatible storage server + minio: + image: docker.io/minio/minio + command: server /data + volumes: + - ./data/minio:/data + environment: + MINIO_ROOT_USER: minioautumn + MINIO_ROOT_PASSWORD: minioautumn + MINIO_DOMAIN: minio + networks: + default: + aliases: + - revolt-uploads.minio + # legacy support: + - attachments.minio + - avatars.minio + - backgrounds.minio + - icons.minio + - banners.minio + - emojis.minio + restart: always + + # Caddy: Web server + caddy: + image: docker.io/caddy + restart: always + env_file: .env.web + ports: + - "8880:80" + - "8443:443" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - ./data/caddy-data:/data + - ./data/caddy-config:/config + + # API server + api: + image: ghcr.io/stoatchat/api:v0.11.1 + depends_on: + database: + condition: service_healthy + redis: + condition: service_started + rabbit: + condition: service_healthy + volumes: + - type: bind + source: ./Revolt.toml + target: /Revolt.toml + restart: always + + # Events service + events: + image: ghcr.io/stoatchat/events:v0.11.1 + depends_on: + database: + condition: service_healthy + redis: + condition: service_started + volumes: + - type: bind + source: ./Revolt.toml + target: /Revolt.toml + restart: always + + # File server + autumn: + image: ghcr.io/stoatchat/file-server:v0.11.1 + depends_on: + database: + condition: service_healthy + createbuckets: + condition: service_started + volumes: + - type: bind + source: ./Revolt.toml + target: /Revolt.toml + restart: always + + # Metadata and image proxy + january: + image: ghcr.io/stoatchat/proxy:v0.11.1 + volumes: + - type: bind + source: ./Revolt.toml + target: /Revolt.toml + restart: always + + # Tenor proxy + gifbox: + image: ghcr.io/stoatchat/gifbox:v0.11.1 + volumes: + - type: bind + source: ./Revolt.toml + target: /Revolt.toml + restart: always + + # Regular task daemon + crond: + image: ghcr.io/stoatchat/crond:v0.11.1 + depends_on: + database: + condition: service_healthy + minio: + condition: service_started + volumes: + - type: bind + source: ./Revolt.toml + target: /Revolt.toml + restart: always + + # Push notification daemon + pushd: + image: ghcr.io/stoatchat/pushd:v0.11.1 + depends_on: + database: + condition: service_healthy + redis: + condition: service_started + rabbit: + condition: service_healthy + volumes: + - type: bind + source: ./Revolt.toml + target: /Revolt.toml + restart: always + + # Voice ingress daemon + voice-ingress: + image: ghcr.io/stoatchat/voice-ingress:v0.11.1 + restart: always + depends_on: + database: + condition: service_healthy + rabbit: + condition: service_healthy + volumes: + - type: bind + source: ./Revolt.toml + target: /Revolt.toml + + livekit: + image: ghcr.io/stoatchat/livekit-server:v1.9.6 + depends_on: + redis: + condition: service_started + command: --config /etc/livekit.yml + ports: + - "7881:7881" + - "50000-50100:50000-50100/udp" + restart: always + volumes: + - type: bind + source: ./livekit.yml + target: /etc/livekit.yml + + # Create buckets for minio. + createbuckets: + image: docker.io/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; + " + + # Web App + web: + image: ghcr.io/stoatchat/for-web:addb6b7 + restart: always + env_file: .env.web \ No newline at end of file