Files
microdao-daarion/docs/tasks/TASK_PHASE_DOCKER_COMPOSE_CITY_SERVICE_POSTGRES.md
2025-11-30 06:51:46 -08:00

4.1 KiB
Raw Blame History

TASK PHASE — DOCKER COMPOSE FIX FOR CITY-SERVICE & POSTGRES

Version: 1.0
Target: NODE1 (production host)


1. Мета

Привести docker-compose до стану, де:

  • dagi-postgres використовує існуючий прод-том microdao-daarion_postgres_data;
  • daarion-city-service запускається як частина compose-стека (без ручних docker run);
  • перезапуск окремих сервісів не створює “порожні” БД та не ламає production-дані.

2. Поточний стан

  • Postgres вручну запущений із томом microdao-daarion_postgres_data.
  • daarion-city-service стартує окремим docker run з ENV:
    • DATABASE_URL=postgresql://postgres:postgres@dagi-postgres:5432/daarion
    • MATRIX_GATEWAY_URL=http://gateway:9300
    • NATS_URL=nats://dagi-nats:4222
  • UI знову показує агенти/мікроDAO/ноди, але схему запуску треба зафіксувати в compose.

3. Завдання

3.1. Оновити docker-compose для Postgres

  1. Знайти сервіс dagi-postgres та переконатися, що він використовує правильний образ (14 або 15) і запускається на мережі dagi-network.
  2. Прив’язати його до прод-даних:
    services:
      dagi-postgres:
        image: postgres:15-alpine
        volumes:
          - microdao-daarion_postgres_data:/var/lib/postgresql/data
        environment:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: daarion
    
    volumes:
      microdao-daarion_postgres_data:
        external: true
    
  3. Якщо том ще не оголошений як external, додати це внизу compose-файла.

3.2. Оновити docker-compose для daarion-city-service

  1. Додати/оновити сервіс:
    daarion-city-service:
      image: daarion-city-service:latest   # або конкретний тег
      depends_on:
        - dagi-postgres
        - dagi-nats
        - gateway
      environment:
        DATABASE_URL: postgresql://postgres:postgres@dagi-postgres:5432/daarion
        MATRIX_GATEWAY_URL: http://gateway:9300
        NATS_URL: nats://dagi-nats:4222
      ports:
        - "7001:7001"
      networks:
        - dagi-network
    
  2. Видалити тимчасовий контейнер, який стартував через docker run, після того як compose-версія стабільно працює.

3.3. Документація / запуск без перезапуску всієї інфри

  1. Описати в README/DEPLOY-нотах:
    docker compose up -d dagi-postgres
    docker compose up -d daarion-city-service --no-deps
    
    Так не будуть стартувати всі інші сервіси (router, gateway, тощо).
  2. Додати застереження не запускати docker compose up без списку сервісів на production, щоб не з’являлися нові “порожні” контейнери.

3.4. Перевірка після оновлення

  1. docker ps → бачимо dagi-postgres + daarion-city-service (compose-контейнери).
  2. curl https://daarion.space/api/nodes/list та .../node-1-hetzner-gex44 повертають дані.
  3. UI /nodes, /agents, /microdao працюють після повного перезапуску обох сервісів.

4. Критерії завершення

  • Postgres і City-service запускаються тільки через docker compose.
  • Використовується саме том microdao-daarion_postgres_data (жодних нових томів).
  • Після docker compose up -d dagi-postgres && docker compose up -d daarion-city-service --no-deps усі прод-дані залишаються на місці.
  • Документація містить оновлені інструкції з перезапуску.