gitingest Docker & Self-Hosted Deployment

GitHub

Replace 'hub' with 'ingest' in any GitHub URL to get a prompt-friendly extract of a codebase

14,981 stars Python Python 1 file ยท ~2,917 tokens #ai#code#developer-tool#ingestion
RAW Compose
1. Pull Image (GHCR) docker pull ghcr.io/coderamp-labs/gitingest
2. Docker Run (1-Click Launch) docker run -d --name gitingest -p 8000:8000 --restart always ghcr.io/coderamp-labs/gitingest:latest
3. Podman Run podman run -d --name gitingest -p 8000:8000 --restart always ghcr.io/coderamp-labs/gitingest:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://ghcr.io/coderamp-labs/gitingest:latest
5. ORAS Pull (OCI Artifact) oras pull ghcr.io/coderamp-labs/gitingest:latest
6. Compose Deployment docker compose up -d
compose.yml
Download .yml
x-base-environment: &base-environment
  # Python Configuration
  PYTHONUNBUFFERED: "1"
  PYTHONDONTWRITEBYTECODE: "1"
  # Host Configuration
  ALLOWED_HOSTS: ${ALLOWED_HOSTS:-gitingest.com,*.gitingest.com,localhost,127.0.0.1}
  # Metrics Configuration
  GITINGEST_METRICS_ENABLED: ${GITINGEST_METRICS_ENABLED:-true}
  GITINGEST_METRICS_HOST: ${GITINGEST_METRICS_HOST:-0.0.0.0}
  GITINGEST_METRICS_PORT: ${GITINGEST_METRICS_PORT:-9090}
  # Sentry Configuration
  GITINGEST_SENTRY_ENABLED: ${GITINGEST_SENTRY_ENABLED:-false}
  GITINGEST_SENTRY_DSN: ${GITINGEST_SENTRY_DSN:-}
  GITINGEST_SENTRY_TRACES_SAMPLE_RATE: ${GITINGEST_SENTRY_TRACES_SAMPLE_RATE:-1.0}
  GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE: ${GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE:-1.0}
  GITINGEST_SENTRY_PROFILE_LIFECYCLE: ${GITINGEST_SENTRY_PROFILE_LIFECYCLE:-trace}
  GITINGEST_SENTRY_SEND_DEFAULT_PII: ${GITINGEST_SENTRY_SEND_DEFAULT_PII:-true}

x-prod-environment: &prod-environment
  GITINGEST_SENTRY_ENVIRONMENT: ${GITINGEST_SENTRY_ENVIRONMENT:-production}

x-dev-environment: &dev-environment
  DEBUG: "true"
  LOG_LEVEL: "DEBUG"
  RELOAD: "true"
  GITINGEST_SENTRY_ENVIRONMENT: ${GITINGEST_SENTRY_ENVIRONMENT:-development}
  # S3 Configuration for development
  S3_ENABLED: "true"
  S3_ENDPOINT: http://minio:9000
  S3_ACCESS_KEY: ${S3_ACCESS_KEY:-gitingest}
  S3_SECRET_KEY: ${S3_SECRET_KEY:-gitingest123}
  S3_BUCKET_NAME: ${S3_BUCKET_NAME:-gitingest-bucket}
  S3_REGION: ${S3_REGION:-us-east-1}
  S3_DIRECTORY_PREFIX: ${S3_DIRECTORY_PREFIX:-dev}
  S3_ALIAS_HOST: ${S3_ALIAS_HOST:-http://127.0.0.1:9000/${S3_BUCKET_NAME:-gitingest-bucket}}

x-app-base: &app-base
  ports:
    - "${APP_WEB_BIND:-8000}:8000"  # Main application port
    - "${GITINGEST_METRICS_HOST:-127.0.0.1}:${GITINGEST_METRICS_PORT:-9090}:9090"  # Metrics port
  user: "1000:1000"
  command: ["python", "-m", "server"]

services:
  # Production service configuration
  app:
    <<: *app-base
    image: ghcr.io/coderamp-labs/gitingest:latest
    profiles:
      - prod
    environment:
      <<: [*base-environment, *prod-environment]
    restart: unless-stopped

  # Development service configuration
  app-dev:
    <<: *app-base
    build:
      context: .
      dockerfile: Dockerfile
    profiles:
      - dev
    environment:
      <<: [*base-environment, *dev-environment]
    volumes:
      # Mount source code for live development
      - ./src:/app:ro
    # Use --reload flag for hot reloading during development
    command: ["python", "-m", "server"]
    depends_on:
      minio-setup:
        condition: service_completed_successfully

  # MinIO S3-compatible object storage for development
  minio:
    image: minio/minio:latest
    profiles:
      - dev
    ports:
      - "9000:9000"  # API port
      - "9001:9001"  # Console port
    environment: &minio-environment
      MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
      MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
    volumes:
      - minio-data:/data
    command: server /data --console-address ":9001"
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 30s
      start_period: 30s
      start_interval: 1s

  # MinIO setup service to create bucket and user
  minio-setup:
    image: minio/mc
    profiles:
      - dev
    depends_on:
      minio:
        condition: service_healthy
    environment:
      <<: *minio-environment
      S3_ACCESS_KEY: ${S3_ACCESS_KEY:-gitingest}
      S3_SECRET_KEY: ${S3_SECRET_KEY:-gitingest123}
      S3_BUCKET_NAME: ${S3_BUCKET_NAME:-gitingest-bucket}
    volumes:
      - ./.docker/minio/setup.sh:/setup.sh:ro
    entrypoint: sh
    command: -c /setup.sh

volumes:
  minio-data:
    driver: local