146 lines
3.5 KiB
Markdown
146 lines
3.5 KiB
Markdown
# Mainroom - Orchestration Layer
|
|
|
|
## Purpose
|
|
|
|
Mainroom orchestrates **soleprint + managed rooms** together (e.g., amar).
|
|
|
|
Key principle: Connect soleprint to managed apps **without modifying either side**.
|
|
|
|
## Structure
|
|
|
|
```
|
|
mainroom/
|
|
├── amar -> ../cfg/amar # Symlink to room config
|
|
├── soleprint/ # Soleprint Docker config
|
|
│ ├── docker-compose.yml
|
|
│ ├── docker-compose.nginx.yml
|
|
│ └── .env
|
|
├── sbwrapper/ # Sidebar wrapper UI
|
|
│ ├── config.json # Room-specific (users, Jira)
|
|
│ ├── sidebar.js
|
|
│ └── sidebar.css
|
|
└── ctrl/ # Orchestration scripts
|
|
├── start.sh # Start all services
|
|
├── stop.sh
|
|
├── deploy.sh # Deploy to AWS
|
|
└── server/ # AWS setup scripts
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Local Development
|
|
```bash
|
|
# First, build soleprint
|
|
cd spr/
|
|
python build.py dev --cfg amar
|
|
|
|
# Create shared network
|
|
docker network create soleprint_network
|
|
|
|
# Start everything
|
|
cd mainroom/ctrl
|
|
./start.sh -d # Detached
|
|
./start.sh # Foreground (logs)
|
|
./start.sh amar # Only amar
|
|
./start.sh soleprint # Only soleprint
|
|
./stop.sh # Stop all
|
|
```
|
|
|
|
### Deploy to AWS
|
|
```bash
|
|
cd mainroom/ctrl
|
|
./deploy.sh --dry-run # Preview
|
|
./deploy.sh # Deploy
|
|
```
|
|
|
|
## Components
|
|
|
|
### ctrl/ - Orchestration
|
|
| Script | Purpose |
|
|
|--------|---------|
|
|
| start.sh | Start amar + soleprint |
|
|
| stop.sh | Stop all |
|
|
| deploy.sh | rsync to AWS |
|
|
| server/ | AWS setup scripts |
|
|
|
|
### soleprint/ - Docker Config
|
|
Uses `SOLEPRINT_BARE_PATH` to mount gen/ into container.
|
|
|
|
**Env vars:**
|
|
- `SOLEPRINT_BARE_PATH` - Path to gen/
|
|
- `DEPLOYMENT_NAME` - Container prefix
|
|
- `NETWORK_NAME` - Docker network (soleprint_network)
|
|
- `SOLEPRINT_PORT` - Default 12000
|
|
|
|
### sbwrapper/ - Sidebar Wrapper
|
|
Collapsible sidebar overlay for managed apps.
|
|
|
|
**Features:**
|
|
- Quick login (switch test users)
|
|
- Jira ticket info
|
|
- Environment info
|
|
- Keyboard: `Ctrl+Shift+P`
|
|
|
|
**config.json:**
|
|
```json
|
|
{
|
|
"room_name": "amar",
|
|
"wrapper": {
|
|
"users": [
|
|
{"id": "admin", "label": "Admin", "username": "admin@test.com", ...}
|
|
],
|
|
"jira": {"ticket_id": "VET-535"}
|
|
}
|
|
}
|
|
```
|
|
|
|
### amar/ - Room Symlink
|
|
Points to `../cfg/amar` which contains:
|
|
- docker-compose.yml
|
|
- .env
|
|
- Dockerfile.backend, Dockerfile.frontend
|
|
- databrowse/depot/, tester/tests/, monitors/, models/
|
|
|
|
## How It Works
|
|
|
|
1. `build.py dev --cfg amar` creates gen/ with room config
|
|
2. `mainroom/amar` symlinks to `cfg/amar`
|
|
3. `ctrl/start.sh` finds docker-compose.yml in amar/ and soleprint/
|
|
4. Both share `soleprint_network` for inter-container communication
|
|
5. sbwrapper overlays UI on managed app
|
|
|
|
## Ports
|
|
|
|
| Service | Port |
|
|
|---------|------|
|
|
| Soleprint | 12000 |
|
|
| Amar Backend | 8000 |
|
|
| Amar Frontend | 3000 |
|
|
|
|
## Integration with ppl/
|
|
|
|
Deploy via ppl/ctrl for centralized infrastructure management:
|
|
```bash
|
|
cd /home/mariano/wdir/ppl/ctrl
|
|
./deploy-gen.sh # Build spr + deploy
|
|
./dns.sh add soleprint # Add DNS record
|
|
```
|
|
|
|
## Server Structure (mcrn.ar)
|
|
|
|
```
|
|
~/mainroom/
|
|
├── amar/ # Amar Docker services
|
|
├── soleprint/ # Soleprint Docker services
|
|
└── ctrl/ # Server-side scripts
|
|
```
|
|
|
|
## External Paths
|
|
|
|
| What | Path |
|
|
|------|------|
|
|
| Amar Backend | /home/mariano/wdir/ama/amar_django_back |
|
|
| Amar Frontend | /home/mariano/wdir/ama/amar_frontend |
|
|
| Soleprint gen | /home/mariano/wdir/spr/gen |
|
|
| Pipelines | /home/mariano/wdir/ppl |
|