Docker Setup
Docker is used to run PostgreSQL, Redis, and other services locally.
Prerequisites
- Docker Desktop installed and running
- Docker Compose installed
Quick Start
Starting Services
# Navigate to a repo with docker-compose.yml
cd sprout_backend
# Start services in detached mode
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
Service Configuration
sprout_backend/docker-compose.yml
Typically includes:
- PostgreSQL: Port 5432
- Redis: Port 6379
sprout_etl/docker-compose.yml
Similar configuration for ETL service database and Redis.
skybox_token_extractor/docker-compose.yml
Includes:
- Playwright service on port 3005
- Network configuration for external access
Common Docker Commands
Container Management
# List running containers
docker ps
# List all containers
docker ps -a
# Stop a container
docker stop <container_id>
# Remove a container
docker rm <container_id>
# View container logs
docker logs <container_id>
docker logs -f <container_id> # Follow logs
Database Access
# Access PostgreSQL
docker exec -it <postgres_container> psql -U postgres
# Access specific database
docker exec -it <postgres_container> psql -U postgres -d <database_name>
# Run SQL file
docker exec -i <postgres_container> psql -U postgres -d <database_name> < file.sql
Redis Access
# Access Redis CLI
docker exec -it <redis_container> redis-cli
# Monitor Redis commands
docker exec -it <redis_container> redis-cli MONITOR
Docker Compose Commands
# Start services
docker-compose up -d
# Start with logs
docker-compose up
# Stop services
docker-compose down
# Stop and remove volumes
docker-compose down -v
# Restart services
docker-compose restart
# View logs
docker-compose logs
docker-compose logs -f # Follow logs
docker-compose logs <service_name> # Specific service
# Rebuild containers
docker-compose up --build
# Scale services
docker-compose up --scale <service>=<count>
Troubleshooting
Port Already in Use
# Find what's using the port
lsof -i :5432
# Kill the process or change port in docker-compose.yml
Container Won't Start
# Check logs
docker-compose logs <service_name>
# Check container status
docker ps -a
# Remove and recreate
docker-compose down
docker-compose up -d
Database Connection Issues
# Verify container is running
docker ps | grep postgres
# Check database URL matches Docker setup
# Should be: postgresql://postgres:password@localhost:5432/dbname
# Test connection
docker exec -it <postgres_container> psql -U postgres -c "SELECT 1"
Volume Issues
# List volumes
docker volume ls
# Inspect volume
docker volume inspect <volume_name>
# Remove unused volumes
docker volume prune
Data Persistence
Docker volumes are used to persist database data:
# View volumes
docker volume ls
# Backup database
docker exec <postgres_container> pg_dump -U postgres <database> > backup.sql
# Restore database
docker exec -i <postgres_container> psql -U postgres <database> < backup.sql
Network Configuration
Services can communicate via Docker networks:
# List networks
docker network ls
# Inspect network
docker network inspect <network_name>
# Connect container to network
docker network connect <network_name> <container_id>
Production Considerations
For production:
- Use managed database services (not Docker)
- Use managed Redis services
- Configure proper networking and security
- Use environment-specific docker-compose files
Next Steps
- Environment Variables - Configure services
- Commands Reference - Development commands
- Testing - Testing with Docker