Skip to content

# 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` усі прод-дані залишаються на місці.
- Документація містить оновлені інструкції з перезапуску.