From ef6237ffdfe3eb7c35eab9e214a3e0c3be87e99a Mon Sep 17 00:00:00 2001 From: Sharang Parnerkar Date: Tue, 3 Mar 2026 09:23:32 +0100 Subject: [PATCH] refactor(coolify): externalize postgres, qdrant, S3 - Replace bp-core-postgres with POSTGRES_HOST env var - Replace bp-core-qdrant with QDRANT_URL env var - Replace bp-core-minio with S3_ENDPOINT/S3_ACCESS_KEY/S3_SECRET_KEY Co-Authored-By: Claude Opus 4.6 --- .env.coolify.example | 17 ++++++++++++----- docker-compose.coolify.yml | 24 +++++++++++++----------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/.env.coolify.example b/.env.coolify.example index ca87373..3e36b3b 100644 --- a/.env.coolify.example +++ b/.env.coolify.example @@ -5,7 +5,9 @@ # for the breakpilot-lehrer Docker Compose resource. # ========================================================= -# --- Database (shared with Core) --- +# --- External PostgreSQL (Coolify-managed, same as Core) --- +POSTGRES_HOST= +POSTGRES_PORT=5432 POSTGRES_USER=breakpilot POSTGRES_PASSWORD=CHANGE_ME_SAME_AS_CORE POSTGRES_DB=breakpilot_db @@ -13,10 +15,15 @@ POSTGRES_DB=breakpilot_db # --- Security --- JWT_SECRET=CHANGE_ME_SAME_AS_CORE -# --- MinIO (from Core) --- -MINIO_ROOT_USER=breakpilot -MINIO_ROOT_PASSWORD=CHANGE_ME_SAME_AS_CORE -MINIO_BUCKET=breakpilot-rag +# --- External S3 Storage (same as Core) --- +S3_ENDPOINT= +S3_ACCESS_KEY=CHANGE_ME_SAME_AS_CORE +S3_SECRET_KEY=CHANGE_ME_SAME_AS_CORE +S3_BUCKET=breakpilot-rag +S3_SECURE=true + +# --- External Qdrant (Coolify-managed, same as Core) --- +QDRANT_URL=http://:6333 # --- Session --- SESSION_TTL_HOURS=24 diff --git a/docker-compose.coolify.yml b/docker-compose.coolify.yml index 99ede3d..d7613b7 100644 --- a/docker-compose.coolify.yml +++ b/docker-compose.coolify.yml @@ -3,6 +3,8 @@ # ========================================================= # Requires: breakpilot-core must be running # Deployed via Coolify. SSL termination handled by Traefik. +# External services (managed separately in Coolify): +# - PostgreSQL, Qdrant, S3-compatible storage # ========================================================= networks: @@ -132,7 +134,7 @@ services: - lehrer_backend_data:/app/data environment: PORT: 8001 - DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER}:${POSTGRES_PASSWORD}@bp-core-postgres:5432/${POSTGRES_DB}?options=-csearch_path%3Dlehrer,core,public + DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT:-5432}/${POSTGRES_DB}?options=-csearch_path%3Dlehrer,core,public JWT_SECRET: ${JWT_SECRET} ENVIRONMENT: production CONSENT_SERVICE_URL: http://bp-core-consent-service:8081 @@ -195,14 +197,14 @@ services: BACKEND_URL: http://backend-lehrer:8001 SCHOOL_SERVICE_URL: http://school-service:8084 ENVIRONMENT: production - DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@bp-core-postgres:5432/${POSTGRES_DB} + DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT:-5432}/${POSTGRES_DB} EMBEDDING_SERVICE_URL: http://bp-core-embedding-service:8087 - QDRANT_URL: http://bp-core-qdrant:6333 - MINIO_ENDPOINT: bp-core-minio:9000 - MINIO_ACCESS_KEY: ${MINIO_ROOT_USER} - MINIO_SECRET_KEY: ${MINIO_ROOT_PASSWORD} - MINIO_BUCKET: ${MINIO_BUCKET:-breakpilot-rag} - MINIO_SECURE: "false" + QDRANT_URL: ${QDRANT_URL} + MINIO_ENDPOINT: ${S3_ENDPOINT} + MINIO_ACCESS_KEY: ${S3_ACCESS_KEY} + MINIO_SECRET_KEY: ${S3_SECRET_KEY} + MINIO_BUCKET: ${S3_BUCKET:-breakpilot-rag} + MINIO_SECURE: ${S3_SECURE:-true} PADDLEOCR_SERVICE_URL: ${PADDLEOCR_SERVICE_URL:-} ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-} @@ -239,7 +241,7 @@ services: expose: - "8084" environment: - DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@bp-core-postgres:5432/${POSTGRES_DB} + DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT:-5432}/${POSTGRES_DB} JWT_SECRET: ${JWT_SECRET} PORT: 8084 ENVIRONMENT: production @@ -300,8 +302,8 @@ services: RATE_LIMIT_PER_SEC: "0.2" MAX_DEPTH: "4" MAX_PAGES_PER_RUN: "500" - DB_HOST: bp-core-postgres - DB_PORT: "5432" + DB_HOST: ${POSTGRES_HOST} + DB_PORT: ${POSTGRES_PORT:-5432} DB_USER: ${POSTGRES_USER} DB_PASSWORD: ${POSTGRES_PASSWORD} DB_NAME: ${POSTGRES_DB}