services: db: image: pgvector/pgvector:pg17 container_name: cocosearch-db ports: - "5432:5432" environment: POSTGRES_USER: cocosearch POSTGRES_PASSWORD: cocosearch POSTGRES_DB: cocosearch volumes: - ./docker_data/postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U cocosearch -d cocosearch"] interval: 10s timeout: 5s retries: 5 start_period: 30s restart: unless-stopped app: profiles: ["app"] build: . container_name: cocosearch-app depends_on: db: condition: service_healthy ollama: condition: service_healthy required: false ports: - "${COCOSEARCH_MCP_PORT:-3000}:${COCOSEARCH_MCP_PORT:-3000}" environment: COCOSEARCH_DATABASE_URL: postgresql://cocosearch:cocosearch@db:5432/cocosearch COCOSEARCH_OLLAMA_URL: http://ollama:11434 # COCOSEARCH_EMBEDDING_PROVIDER: ollama # default; set to openai or openrouter for remote embeddings # COCOSEARCH_EMBEDDING_API_KEY: ${COCOSEARCH_EMBEDDING_API_KEY:-} COCOSEARCH_NO_DASHBOARD: "1" COCOSEARCH_MCP_PORT: ${COCOSEARCH_MCP_PORT:-3000} COCOSEARCH_PROJECTS_DIR: /projects volumes: - ${PROJECTS_DIR:-.}:/projects:ro healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:$${COCOSEARCH_MCP_PORT:-3000}/health"] interval: 30s timeout: 5s retries: 3 start_period: 15s restart: unless-stopped ollama: profiles: ["ollama"] image: ollama/ollama:latest container_name: cocosearch-ollama ports: - "11434:11434" volumes: - ./docker_data/ollama:/root/.ollama entrypoint: /bin/sh command: -c "ollama serve & sleep 5 && ollama pull nomic-embed-text && wait" healthcheck: test: ["CMD", "ollama", "list"] interval: 10s timeout: 10s retries: 5 start_period: 60s restart: unless-stopped