From 85a785bd865ff9c4b724884202a6663fb5383532 Mon Sep 17 00:00:00 2001 From: Apple Date: Sun, 30 Nov 2025 06:58:02 -0800 Subject: [PATCH] fix(compose): use external postgres volume + city-service ENV - docker-compose.yml: postgres uses microdao-daarion_postgres_data (external) - docker-compose.yml: city-service connects to dagi-postgres:5432/daarion + NATS_URL - docker-compose.city-space.yml: added dagi-postgres, dagi-nats as services - docs/DEPLOY_ON_SERVER.md: added restart instructions without data loss Closes TASK_PHASE_DOCKER_COMPOSE_CITY_SERVICE_POSTGRES --- docker-compose.city-space.yml | 58 ++++++++++++++++++++++++++++++++--- docker-compose.yml | 14 +++++---- docs/DEPLOY_ON_SERVER.md | 48 +++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 10 deletions(-) diff --git a/docker-compose.city-space.yml b/docker-compose.city-space.yml index 0a245e69..cceb2232 100644 --- a/docker-compose.city-space.yml +++ b/docker-compose.city-space.yml @@ -2,7 +2,7 @@ version: '3.8' services: # ============================================================================ - # City Service + # City Service (Production-ready) # ============================================================================ city-service: build: @@ -13,16 +13,19 @@ services: - "7001:7001" environment: - LOG_LEVEL=INFO - - ENVIRONMENT=development + - ENVIRONMENT=production - DATABASE_URL=postgresql://postgres:postgres@dagi-postgres:5432/daarion - - REDIS_URL=redis://dagi-redis:6379 + - MATRIX_GATEWAY_URL=http://gateway:9300 - NATS_URL=nats://dagi-nats:4222 + depends_on: + - dagi-postgres + - dagi-nats networks: - daarion-network - dagi-network restart: unless-stopped healthcheck: - test: ["CMD", "python", "-c", "import requests; requests.get('http://localhost:7001/health')"] + test: ["CMD", "curl", "-f", "http://localhost:7001/health"] interval: 30s timeout: 5s retries: 3 @@ -76,6 +79,53 @@ services: timeout: 5s retries: 3 + # ============================================================================ + # External Services (from main docker-compose.yml) + # ============================================================================ + dagi-postgres: + image: postgres:15-alpine + container_name: dagi-postgres + ports: + - "5432:5432" + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres + - POSTGRES_DB=daarion + volumes: + - microdao-daarion_postgres_data:/var/lib/postgresql/data + networks: + - dagi-network + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 + + dagi-nats: + image: nats:2.10-alpine + container_name: dagi-nats + ports: + - "4222:4222" + - "8222:8222" + command: ["--jetstream", "--store_dir=/data", "-m", "8222"] + volumes: + - nats-data:/data + networks: + - dagi-network + restart: unless-stopped + healthcheck: + test: ["CMD", "wget", "-qO-", "http://localhost:8222/healthz"] + interval: 10s + timeout: 5s + retries: 3 + +volumes: + microdao-daarion_postgres_data: + external: true + nats-data: + driver: local + networks: daarion-network: name: daarion-network diff --git a/docker-compose.yml b/docker-compose.yml index 40f02657..05a72bab 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -156,7 +156,7 @@ services: timeout: 10s retries: 3 - # PostgreSQL Database + # PostgreSQL Database (Production: external volume) postgres: image: postgres:15-alpine container_name: dagi-postgres @@ -165,9 +165,9 @@ services: environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - - POSTGRES_DB=daarion_memory + - POSTGRES_DB=daarion volumes: - - postgres-data:/var/lib/postgresql/data + - microdao-daarion_postgres_data:/var/lib/postgresql/data - ./services/memory-service/init.sql:/docker-entrypoint-initdb.d/init.sql networks: - dagi-network @@ -348,8 +348,9 @@ services: ports: - "7001:7001" environment: - - DATABASE_URL=postgresql://postgres:postgres@postgres:5432/daarion_memory + - DATABASE_URL=postgresql://postgres:postgres@dagi-postgres:5432/daarion - MATRIX_GATEWAY_URL=http://gateway:9300 + - NATS_URL=nats://dagi-nats:4222 - LOG_LEVEL=INFO volumes: - ./logs:/app/logs @@ -372,8 +373,9 @@ volumes: driver: local memory-data: driver: local - postgres-data: - driver: local + # Production: use existing external volume with all DAARION data + microdao-daarion_postgres_data: + external: true vision-model-cache: driver: local qdrant-data: diff --git a/docs/DEPLOY_ON_SERVER.md b/docs/DEPLOY_ON_SERVER.md index fb634004..d2576f12 100644 --- a/docs/DEPLOY_ON_SERVER.md +++ b/docs/DEPLOY_ON_SERVER.md @@ -426,6 +426,54 @@ docker run --rm \ ## 🔄 Updates & Maintenance +### Docker Compose для Postgres та City-Service (NODE1) + +**⚠️ ВАЖЛИВО:** На production (NODE1) використовується external том `microdao-daarion_postgres_data`. +Не запускайте `docker compose up` без списку сервісів — це може створити нові порожні контейнери! + +**Правильний запуск Postgres і City-Service:** + +```bash +# 1. Спочатку перевірте, що external том існує +docker volume ls | grep postgres_data + +# 2. Якщо тому немає — створіть його (тільки на свіжому сервері) +docker volume create microdao-daarion_postgres_data + +# 3. Запуск Postgres (використовує existing volume) +docker compose up -d postgres + +# 4. Запуск City-Service (без перезапуску залежностей) +docker compose up -d city-service --no-deps + +# 5. Перевірка +docker ps | grep -E "(postgres|city-service)" +curl https://daarion.space/api/nodes/list +``` + +**Альтернативний файл (city-space):** + +```bash +# Якщо використовуєте docker-compose.city-space.yml +docker compose -f docker-compose.city-space.yml up -d dagi-postgres +docker compose -f docker-compose.city-space.yml up -d city-service --no-deps +``` + +**Перевірка після запуску:** + +```bash +# API ноди +curl -s https://daarion.space/api/nodes/list | jq . + +# API агентів +curl -s https://daarion.space/api/agents/ag_daarwizz | jq . + +# MicroDAO +curl -s https://daarion.space/api/microdao/daarion | jq . +``` + +--- + ### Update DAARION ```bash