Skip to main content

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