175 lines
3.4 KiB
Markdown
175 lines
3.4 KiB
Markdown
# Memora Docker Setup
|
|
|
|
Complete Docker Compose setup for running all Memora services locally.
|
|
|
|
## Services
|
|
|
|
This setup includes:
|
|
- **PostgreSQL** with pgvector extension (port 5432)
|
|
- **API Service** - FastAPI backend (port 8080)
|
|
- **Control Plane** - Next.js web UI (port 3000)
|
|
|
|
## Quick Start
|
|
|
|
1. **Configure environment variables:**
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env and set your API keys
|
|
```
|
|
|
|
2. **Start all services:**
|
|
```bash
|
|
./start.sh
|
|
```
|
|
|
|
3. **Access the services:**
|
|
- Control Plane: http://localhost:3000
|
|
- API: http://localhost:8080
|
|
- PostgreSQL: localhost:5432
|
|
|
|
## Scripts
|
|
|
|
### `./start.sh`
|
|
Build and start all services. Waits for all services to be healthy.
|
|
|
|
### `./stop.sh`
|
|
Stop all services (keeps data).
|
|
|
|
### `./clean.sh`
|
|
Stop all services and remove all data (destructive).
|
|
|
|
### `./logs.sh [service]`
|
|
View logs for all services or a specific service:
|
|
```bash
|
|
./logs.sh # All services
|
|
./logs.sh api # API only
|
|
./logs.sh postgres # PostgreSQL only
|
|
./logs.sh control-plane # Control plane only
|
|
```
|
|
|
|
## Manual Docker Compose Commands
|
|
|
|
```bash
|
|
# Start services
|
|
docker-compose up -d
|
|
|
|
# Stop services
|
|
docker-compose down
|
|
|
|
# Rebuild and start
|
|
docker-compose up --build -d
|
|
|
|
# View logs
|
|
docker-compose logs -f
|
|
|
|
# Remove everything including data
|
|
docker-compose down -v
|
|
```
|
|
|
|
## Database
|
|
|
|
### Connection Info
|
|
- **Host:** localhost
|
|
- **Port:** 5432
|
|
- **Database:** memora
|
|
- **User:** memora
|
|
- **Password:** memora_dev
|
|
|
|
### Migrations
|
|
|
|
Database migrations run automatically when the API service starts. The API uses Alembic to:
|
|
1. Check the current schema version
|
|
2. Run any pending migrations
|
|
3. Initialize the database if it's empty
|
|
|
|
Extensions (pgvector, uuid-ossp) are created automatically by the first migration.
|
|
|
|
## Environment Variables
|
|
|
|
Required in `.env` file:
|
|
|
|
```bash
|
|
# API Service Configuration
|
|
MEMORA_API_DATABASE_URL=postgresql://memora:memora_dev@localhost:5432/memora
|
|
MEMORA_API_LLM_PROVIDER=groq
|
|
MEMORA_API_LLM_API_KEY=your-api-key-here
|
|
MEMORA_API_LLM_MODEL=openai/gpt-oss-120b
|
|
|
|
# Optional: Custom LLM endpoint
|
|
# MEMORA_API_LLM_BASE_URL=http://localhost:11434/v1
|
|
|
|
# Control Plane Configuration
|
|
MEMORA_CP_DATAPLANE_API_URL=http://localhost:8080
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Services won't start
|
|
Check logs for errors:
|
|
```bash
|
|
./logs.sh
|
|
```
|
|
|
|
### Database connection issues
|
|
Ensure PostgreSQL is healthy:
|
|
```bash
|
|
docker exec memora-postgres pg_isready -U memora
|
|
```
|
|
|
|
### API won't connect to database
|
|
Check if migrations ran successfully:
|
|
```bash
|
|
./logs.sh api
|
|
```
|
|
|
|
### Control plane can't reach API
|
|
Verify the API is running:
|
|
```bash
|
|
curl http://localhost:8080/
|
|
```
|
|
|
|
### Reset everything
|
|
```bash
|
|
./clean.sh
|
|
./start.sh
|
|
```
|
|
|
|
## Development
|
|
|
|
### Rebuilding after code changes
|
|
|
|
**API changes:**
|
|
```bash
|
|
docker-compose up --build -d api
|
|
```
|
|
|
|
**Control Plane changes:**
|
|
```bash
|
|
docker-compose up --build -d control-plane
|
|
```
|
|
|
|
### Accessing the database
|
|
```bash
|
|
docker exec -it memora-postgres psql -U memora -d memora
|
|
```
|
|
|
|
### Inspecting containers
|
|
```bash
|
|
docker-compose ps
|
|
docker-compose exec api bash
|
|
docker-compose exec control-plane sh
|
|
```
|
|
|
|
## Data Persistence
|
|
|
|
PostgreSQL data is persisted in a Docker volume named `postgres_data`. This data survives container restarts but not `docker-compose down -v`.
|
|
|
|
To backup data:
|
|
```bash
|
|
docker exec memora-postgres pg_dump -U memora memora > backup.sql
|
|
```
|
|
|
|
To restore data:
|
|
```bash
|
|
docker exec -i memora-postgres psql -U memora memora < backup.sql
|
|
```
|