# 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. Прив’язати його до прод-даних: ```yaml 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. Додати/оновити сервіс: ```yaml 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-нотах: ```bash 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` усі прод-дані залишаються на місці. - Документація містить оновлені інструкції з перезапуску.