services: app: build: context: . dockerfile: Dockerfile_coolify args: - NEXT_PUBLIC_LEARNHOUSE_API_URL=${NEXT_PUBLIC_LEARNHOUSE_API_URL} - NEXT_PUBLIC_LEARNHOUSE_BACKEND_URL=${NEXT_PUBLIC_LEARNHOUSE_BACKEND_URL} - NEXT_PUBLIC_LEARNHOUSE_DOMAIN=${NEXT_PUBLIC_LEARNHOUSE_DOMAIN} # Mount the persistent volume to the actual uploads directory (/app/api/content) volumes: - app-uploads:/app/api/content environment: - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} - NEXTAUTH_URL=${NEXTAUTH_URL} - NEXT_PUBLIC_LEARNHOUSE_MULTI_ORG=${NEXT_PUBLIC_LEARNHOUSE_MULTI_ORG} - NEXT_PUBLIC_LEARNHOUSE_DEFAULT_ORG=${NEXT_PUBLIC_LEARNHOUSE_DEFAULT_ORG} - NEXT_PUBLIC_LEARNHOUSE_TOP_DOMAIN=${NEXT_PUBLIC_LEARNHOUSE_TOP_DOMAIN} - LEARNHOUSE_COOKIE_DOMAIN=${LEARNHOUSE_COOKIE_DOMAIN} - LEARNHOUSE_SQL_CONNECTION_STRING=${LEARNHOUSE_SQL_CONNECTION_STRING} - LEARNHOUSE_REDIS_CONNECTION_STRING=${LEARNHOUSE_REDIS_CONNECTION_STRING} - LEARNHOUSE_CHROMADB_HOST=${LEARNHOUSE_CHROMADB_HOST} - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL} # Additional required environment variables - LEARNHOUSE_CONTACT_EMAIL=${LEARNHOUSE_CONTACT_EMAIL} - LEARNHOUSE_EMAIL_PROVIDER=${LEARNHOUSE_EMAIL_PROVIDER} - LEARNHOUSE_IS_AI_ENABLED=${LEARNHOUSE_IS_AI_ENABLED} - LEARNHOUSE_RESEND_API_KEY=${LEARNHOUSE_RESEND_API_KEY} - LEARNHOUSE_SELF_HOSTED=${LEARNHOUSE_SELF_HOSTED} - LEARNHOUSE_SITE_DESCRIPTION=${LEARNHOUSE_SITE_DESCRIPTION} - LEARNHOUSE_SITE_NAME=${LEARNHOUSE_SITE_NAME} - LEARNHOUSE_SSL=${LEARNHOUSE_SSL} - LEARNHOUSE_SYSTEM_EMAIL_ADDRESS=${LEARNHOUSE_SYSTEM_EMAIL_ADDRESS} depends_on: db: condition: service_healthy redis: condition: service_healthy chromadb: condition: service_healthy healthcheck: test: - CMD - curl - '-f' - 'http://127.0.0.1:80' interval: 2s timeout: 10s retries: 10 db: image: postgres:16-alpine restart: always volumes: - postgres-data:/var/lib/postgresql/data environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 5s timeout: 4s retries: 5 redis: image: redis:7.2.3 command: redis-server --requirepass ${REDIS_PASSWORD} restart: always volumes: - redis-data:/data environment: - REDIS_PASSWORD=${REDIS_PASSWORD} healthcheck: test: ["CMD", "redis-cli", "--no-auth-warning", "auth", "${REDIS_PASSWORD}", "ping"] interval: 5s timeout: 4s retries: 5 chromadb: image: chromadb/chroma:0.5.16 environment: - CHROMA_SERVER_HOST=0.0.0.0 # Accept connections from other containers - CHROMA_SERVER_HTTP_PORT=8000 # Keep internal port consistent healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/api/v1"] interval: 10s timeout: 5s retries: 5 volumes: postgres-data: redis-data: app-uploads: