name: cap services: cap-web: image: 'ghcr.io/capsoftware/cap-web:latest' restart: unless-stopped depends_on: mysql: condition: service_healthy minio: condition: service_healthy environment: SERVICE_URL_CAP_WEB_3000: '' DATABASE_URL: 'mysql://cap:${SERVICE_PASSWORD_MYSQL}@mysql:3306/cap' WEB_URL: '${SERVICE_URL_CAP_WEB}' NEXTAUTH_URL: '${SERVICE_URL_CAP_WEB}' DATABASE_ENCRYPTION_KEY: '${SERVICE_HEX_32_DATABASEENCRYPTIONKEY}' NEXTAUTH_SECRET: '${SERVICE_HEX_32_NEXTAUTHSECRET}' CAP_AWS_ACCESS_KEY: capadmin CAP_AWS_SECRET_KEY: '${SERVICE_PASSWORD_MINIO}' CAP_AWS_BUCKET: cap CAP_AWS_REGION: us-east-1 S3_PUBLIC_ENDPOINT: '${SERVICE_URL_MINIO}' S3_INTERNAL_ENDPOINT: 'http://minio:9000' S3_PATH_STYLE: 'true' RESEND_API_KEY: '${RESEND_API_KEY:-}' RESEND_FROM_DOMAIN: '${RESEND_FROM_DOMAIN:-}' GOOGLE_CLIENT_ID: '${GOOGLE_CLIENT_ID:-}' GOOGLE_CLIENT_SECRET: '${GOOGLE_CLIENT_SECRET:-}' APPLE_CLIENT_ID: '${APPLE_CLIENT_ID:-}' APPLE_CLIENT_SECRET: '${APPLE_CLIENT_SECRET:-}' MEDIA_SERVER_URL: 'http://media-server:3456' MEDIA_SERVER_WEBHOOK_SECRET: '${SERVICE_HEX_32_MEDIASERVER}' MEDIA_SERVER_WEBHOOK_URL: 'http://cap-web:3000' healthcheck: test: - CMD - wget - '-q' - '-O' - /dev/null - 'http://127.0.0.1:3000/' interval: 30s timeout: 10s retries: 3 start_period: 60s media-server: image: 'ghcr.io/capsoftware/cap-media-server:latest' restart: unless-stopped environment: PORT: 3456 MEDIA_SERVER_WEBHOOK_SECRET: '${SERVICE_HEX_32_MEDIASERVER}' healthcheck: test: - CMD - bun - '-e' - "fetch('http://127.0.0.1:3456/health').then((response) => process.exit(response.ok ? 0 : 1)).catch(() => process.exit(1))" interval: 30s timeout: 10s retries: 3 start_period: 10s mysql: image: 'mysql:8.0' restart: unless-stopped environment: MYSQL_DATABASE: cap MYSQL_USER: cap MYSQL_PASSWORD: '${SERVICE_PASSWORD_MYSQL}' MYSQL_ROOT_PASSWORD: '${SERVICE_PASSWORD_64_MYSQL}' command: - '--max_connections=1000' - '--character-set-server=utf8mb4' - '--collation-server=utf8mb4_unicode_ci' volumes: - 'cap-mysql-data:/var/lib/mysql' healthcheck: test: - CMD - mysqladmin - ping - '-h' - localhost - '-u' - cap - '-p${SERVICE_PASSWORD_MYSQL}' interval: 10s timeout: 5s retries: 10 start_period: 30s minio: image: 'minio/minio:latest' restart: unless-stopped command: 'server /data --console-address ":9001"' environment: MINIO_ROOT_USER: capadmin MINIO_ROOT_PASSWORD: '${SERVICE_PASSWORD_MINIO}' SERVICE_URL_MINIO_9000: '' volumes: - 'cap-minio-data:/data' healthcheck: test: - CMD - mc - ready - local interval: 30s timeout: 10s retries: 3 start_period: 10s volumes: cap-mysql-data: null cap-minio-data: null