--- title: "Database Options" description: "Configure SQLite or PostgreSQL database for Pangolin" --- ## Overview > Choose between SQLite (default) or PostgreSQL for your database Pangolin supports two database options: SQLite for simplicity and PostgreSQL for production deployments. - No configuration required - Easy to use and portable - Built into the main image - Perfect for development - Production-ready database - Better performance at scale - Requires separate image - Advanced configuration options ## SQLite By default, Pangolin uses SQLite for its ease of use and portability. **Docker Image**: `fosrl/pangolin:` No configuration is required to use SQLite with Pangolin. ## PostgreSQL You can optionally use PostgreSQL for production deployments. **Docker Image**: `fosrl/pangolin:postgresql-` ### Configuration Add the following section to your Pangolin configuration file: ```yaml title="config.yml" postgres: connection_string: postgresql://:@:/ ``` Replace the placeholders with your actual PostgreSQL connection details. ### Docker Compose Example This example sets up PostgreSQL with health checks to ensure the database is ready before Pangolin starts: ```yaml title="docker-compose.yml" name: pangolin services: pangolin: image: fosrl/pangolin:postgresql-latest container_name: pangolin restart: unless-stopped depends_on: postgres: condition: service_healthy volumes: - ./config:/app/config healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3001/api/v1/"] interval: "10s" timeout: "10s" retries: 15 postgres: image: postgres:17 container_name: postgres restart: unless-stopped environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres volumes: - ./config/postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 ``` This example is not necessarily production-ready. Adjust the configuration according to your needs and security requirements. Do not use `latest` tags in production. Use specific version tags for stability.