Refactor Supabase services in docker-compose.yml for better organization and testing
- Commented out all Supabase services to facilitate testing with Supabase CLI. - Updated README to include Supabase directory in project structure. - Adjusted documentation for migration paths in Supabase Docker Compose guide. - Enhanced docker-compose-reset.sh to explicitly remove Supabase volumes and wait for migrations to complete.
This commit is contained in:
141
docs/DOCKER_RATE_LIMIT_FIX.md
Normal file
141
docs/DOCKER_RATE_LIMIT_FIX.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# Fixing Docker Hub Rate Limit Issues
|
||||
|
||||
## Problem
|
||||
|
||||
When pulling multiple Docker images, you may encounter:
|
||||
```
|
||||
Error response from daemon: toomanyrequests: Rate exceeded
|
||||
```
|
||||
|
||||
This happens because Docker Hub limits the number of image pulls for anonymous users.
|
||||
|
||||
## Solutions
|
||||
|
||||
### Solution 1: Login to Docker Hub (Recommended)
|
||||
|
||||
Logging in to Docker Hub increases your rate limit significantly:
|
||||
|
||||
```bash
|
||||
docker login
|
||||
```
|
||||
|
||||
Enter your Docker Hub username and password. This increases your rate limit from ~100 pulls per 6 hours to ~200 pulls per 6 hours.
|
||||
|
||||
### Solution 2: Pull Images One at a Time
|
||||
|
||||
Use the provided script to pull images with delays:
|
||||
|
||||
```bash
|
||||
./scripts/pull-supabase-images.sh
|
||||
```
|
||||
|
||||
This script:
|
||||
- Pulls images one at a time
|
||||
- Waits 10 seconds between pulls
|
||||
- Retries on rate limit errors
|
||||
- Shows progress and summary
|
||||
|
||||
### Solution 3: Manual Pull with Delays
|
||||
|
||||
Pull images manually with delays:
|
||||
|
||||
```bash
|
||||
# Pull one image at a time with delays
|
||||
docker compose pull supabase-db
|
||||
sleep 10
|
||||
docker compose pull supabase-rest
|
||||
sleep 10
|
||||
docker compose pull supabase-auth
|
||||
sleep 10
|
||||
# ... continue for other services
|
||||
```
|
||||
|
||||
### Solution 4: Wait and Retry
|
||||
|
||||
If you hit the rate limit:
|
||||
|
||||
1. **Wait 5-10 minutes** for the rate limit window to reset
|
||||
2. **Try again**:
|
||||
```bash
|
||||
docker compose pull supabase-*
|
||||
```
|
||||
|
||||
### Solution 5: Use Cached Images
|
||||
|
||||
Check if images are already available locally:
|
||||
|
||||
```bash
|
||||
# Check what Supabase images you have
|
||||
docker images | grep supabase
|
||||
|
||||
# If images exist, you can start services without pulling
|
||||
docker compose up -d supabase-*
|
||||
```
|
||||
|
||||
## Current Rate Limits
|
||||
|
||||
- **Anonymous users**: ~100 pulls per 6 hours per IP
|
||||
- **Authenticated users**: ~200 pulls per 6 hours per account
|
||||
- **Paid plans**: Higher limits
|
||||
|
||||
## Quick Fix for Supabase Services
|
||||
|
||||
If you just need to start Supabase services and have some images cached:
|
||||
|
||||
```bash
|
||||
# 1. Check what's already available
|
||||
docker images | grep -E "(supabase|postgres|inbucket)"
|
||||
|
||||
# 2. Try starting services (will only pull missing images)
|
||||
docker compose up -d supabase-db supabase-rest supabase-auth supabase-realtime supabase-storage supabase-studio supabase-meta supabase-migrate supabase-inbucket
|
||||
|
||||
# 3. If rate limited, wait 5 minutes and try pulling specific images:
|
||||
docker compose pull supabase-rest
|
||||
# Wait 10 seconds
|
||||
docker compose pull supabase-auth
|
||||
# Continue...
|
||||
```
|
||||
|
||||
## Alternative: Use AWS ECR Directly
|
||||
|
||||
Since Supabase images are on AWS ECR (`public.ecr.aws/supabase/`), you can pull directly:
|
||||
|
||||
```bash
|
||||
# Pull directly from ECR (may have different rate limits)
|
||||
docker pull public.ecr.aws/supabase/postgrest:v12.2.12
|
||||
docker pull public.ecr.aws/supabase/gotrue:v2.177.0
|
||||
# ... etc
|
||||
```
|
||||
|
||||
## Prevention
|
||||
|
||||
1. **Always login**: `docker login` before pulling many images
|
||||
2. **Use local images**: Keep images locally when possible
|
||||
3. **Pull gradually**: Don't pull all images at once
|
||||
4. **Use image caching**: Docker caches layers, so subsequent pulls are faster
|
||||
|
||||
## Verify Images Are Available
|
||||
|
||||
After pulling, verify:
|
||||
|
||||
```bash
|
||||
# List all Supabase-related images
|
||||
docker images | grep -E "(supabase|postgrest|gotrue|realtime|storage|studio|postgres-meta|inbucket)"
|
||||
|
||||
# Check specific service images
|
||||
docker images public.ecr.aws/supabase/postgrest
|
||||
docker images public.ecr.aws/supabase/gotrue
|
||||
```
|
||||
|
||||
## Start Services After Pulling
|
||||
|
||||
Once images are pulled:
|
||||
|
||||
```bash
|
||||
# Start all Supabase services
|
||||
docker compose up -d supabase-db supabase-rest supabase-auth supabase-realtime supabase-storage supabase-studio supabase-meta supabase-migrate supabase-inbucket
|
||||
|
||||
# Or start everything
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user