name: labrinth services: postgres_db: image: postgres:alpine container_name: labrinth-postgres volumes: - db-data:/var/lib/postgresql/data ports: - '5432:5432' environment: POSTGRES_USER: labrinth POSTGRES_PASSWORD: labrinth POSTGRES_HOST_AUTH_METHOD: trust healthcheck: test: ['CMD', 'pg_isready'] interval: 3s timeout: 5s retries: 3 meilisearch: image: getmeili/meilisearch:v1.12.0 container_name: labrinth-meilisearch restart: on-failure ports: - '7700:7700' volumes: - meilisearch-data:/data.ms environment: MEILI_MASTER_KEY: modrinth MEILI_HTTP_PAYLOAD_SIZE_LIMIT: 107374182400 healthcheck: test: ['CMD', 'curl', '--fail', 'http://localhost:7700/health'] interval: 3s timeout: 5s retries: 3 redis: image: redis:alpine container_name: labrinth-redis restart: on-failure ports: - '6379:6379' volumes: - redis-data:/data healthcheck: test: ['CMD', 'redis-cli', 'PING'] interval: 3s timeout: 5s retries: 3 clickhouse: image: clickhouse/clickhouse-server container_name: labrinth-clickhouse ports: - '8123:8123' environment: CLICKHOUSE_USER: default CLICKHOUSE_PASSWORD: default healthcheck: test: ['CMD-SHELL', 'clickhouse-client --query "SELECT 1"'] interval: 3s timeout: 5s retries: 3 mail: image: axllent/mailpit:v1.27 container_name: labrinth-mail ports: - '1025:1025' - '8025:8025' environment: MP_ENABLE_SPAMASSASSIN: postmark healthcheck: test: [ 'CMD', 'wget', '-q', '-O/dev/null', 'http://localhost:8025/api/v1/info', ] interval: 3s timeout: 5s retries: 3 gotenberg: image: gotenberg/gotenberg:8 container_name: labrinth-gotenberg ports: - '13000:3000' extra_hosts: # Gotenberg must send a message on a webhook to our backend, # so it must have access to our local network - 'host.docker.internal:host-gateway' labrinth: profiles: - with-labrinth build: context: . dockerfile: ./apps/labrinth/Dockerfile container_name: labrinth ports: - '8000:8000' env_file: ./apps/labrinth/.env.docker-compose volumes: - labrinth-cdn-data:/tmp/modrinth depends_on: postgres_db: condition: service_healthy meilisearch: condition: service_healthy redis: condition: service_healthy clickhouse: condition: service_healthy mail: condition: service_healthy develop: watch: - path: ./apps/labrinth action: rebuild volumes: meilisearch-data: db-data: redis-data: labrinth-cdn-data: