services: redis: image: redis/redis-stack:latest container_name: cartero-redis restart: unless-stopped ports: - "6379:6379" volumes: - redis-data:/data networks: - cartero-network postgres: image: pgvector/pgvector:pg17 container_name: cartero-postgres restart: unless-stopped environment: POSTGRES_USER: cartero POSTGRES_PASSWORD: cartero POSTGRES_DB: cartero ports: - "5432:5432" volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U cartero"] interval: 5s timeout: 5s retries: 5 networks: - cartero-network cartero: image: ghcr.io/dracarys18/cartero:latest container_name: cartero restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_started volumes: - ./config.toml:/app/config.toml:ro - ./templates:/app/templates:ro - cartero-data:/app/data environment: - TZ=UTC - OLLAMA_HOST=http://host.docker.internal:11434 - CARTERO_QUEUE_PREFIX=cartero - TYPESAFE_API_KEY=${TYPESAFE_API_KEY} extra_hosts: - "host.docker.internal:host-gateway" dns: - 1.1.1.1 - 8.8.8.8 dns_opt: - timeout:2 - attempts:3 sysctls: - net.ipv6.conf.all.disable_ipv6=1 ports: - "8034:8080" command: ["-config", "/app/config.toml"] networks: - cartero-network cloudflared: image: cloudflare/cloudflared:latest container_name: cloudflare-tunnel restart: unless-stopped command: tunnel --no-autoupdate run environment: - TUNNEL_TOKEN=${TUNNEL_TOKEN} networks: - cartero-network profiles: - tunnel reader: image: ghcr.io/jina-ai/reader:latest container_name: cartero-reader restart: unless-stopped mem_limit: 4g memswap_limit: 4g shm_size: "1gb" cpus: 2 security_opt: ["seccomp=unconfined"] dns: - 1.1.1.1 - 8.8.8.8 sysctls: - net.ipv6.conf.all.disable_ipv6=1 networks: - cartero-network profiles: - reader networks: cartero-network: driver: bridge volumes: cartero-data: driver: local redis-data: driver: local postgres-data: driver: local