2025-04-25 05:15:40 +08:00
|
|
|
# Suna Backend
|
|
|
|
|
|
|
|
## Running the backend
|
|
|
|
|
|
|
|
Within the backend directory, run the following command to stop and start the backend:
|
2025-05-18 05:11:37 +08:00
|
|
|
|
2025-04-25 05:15:40 +08:00
|
|
|
```bash
|
|
|
|
docker compose down && docker compose up --build
|
|
|
|
```
|
|
|
|
|
|
|
|
## Running Individual Services
|
|
|
|
|
|
|
|
You can run individual services from the docker-compose file. This is particularly useful during development:
|
|
|
|
|
2025-05-15 14:29:27 +08:00
|
|
|
### Running only Redis and RabbitMQ
|
2025-05-18 05:11:37 +08:00
|
|
|
|
2025-04-25 05:15:40 +08:00
|
|
|
```bash
|
2025-05-15 14:29:27 +08:00
|
|
|
docker compose up redis rabbitmq
|
2025-04-25 05:15:40 +08:00
|
|
|
```
|
|
|
|
|
2025-05-15 14:29:27 +08:00
|
|
|
### Running only the API and Worker
|
2025-05-18 05:11:37 +08:00
|
|
|
|
2025-04-25 05:15:40 +08:00
|
|
|
```bash
|
2025-05-15 14:29:27 +08:00
|
|
|
docker compose up api worker
|
2025-04-25 05:15:40 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
## Development Setup
|
|
|
|
|
2025-05-15 14:29:27 +08:00
|
|
|
For local development, you might only need to run Redis and RabbitMQ, while working on the API locally. This is useful when:
|
2025-05-18 05:11:37 +08:00
|
|
|
|
2025-04-25 05:15:40 +08:00
|
|
|
- You're making changes to the API code and want to test them directly
|
|
|
|
- You want to avoid rebuilding the API container on every change
|
|
|
|
- You're running the API service directly on your machine
|
|
|
|
|
2025-05-15 14:29:27 +08:00
|
|
|
To run just Redis and RabbitMQ for development:```bash
|
|
|
|
docker compose up redis rabbitmq
|
2025-04-25 05:15:40 +08:00
|
|
|
|
2025-05-18 05:11:37 +08:00
|
|
|
Then you can run your API service locally with the following commands
|
|
|
|
|
|
|
|
```sh
|
|
|
|
# On one terminal
|
|
|
|
cd backend
|
|
|
|
poetry run python3.11 api.py
|
|
|
|
|
|
|
|
# On another terminal
|
|
|
|
cd frontend
|
|
|
|
poetry run python3.11 -m dramatiq run_agent_background
|
|
|
|
```
|
2025-04-25 05:15:40 +08:00
|
|
|
|
|
|
|
### Environment Configuration
|
2025-05-18 05:11:37 +08:00
|
|
|
|
2025-04-25 05:15:40 +08:00
|
|
|
When running services individually, make sure to:
|
2025-05-18 05:11:37 +08:00
|
|
|
|
2025-04-25 05:15:40 +08:00
|
|
|
1. Check your `.env` file and adjust any necessary environment variables
|
|
|
|
2. Ensure Redis connection settings match your local setup (default: `localhost:6379`)
|
2025-05-15 14:29:27 +08:00
|
|
|
3. Ensure RabbitMQ connection settings match your local setup (default: `localhost:5672`)
|
|
|
|
4. Update any service-specific environment variables if needed
|
2025-04-25 05:15:40 +08:00
|
|
|
|
|
|
|
### Important: Redis Host Configuration
|
2025-05-18 05:11:37 +08:00
|
|
|
|
2025-04-25 05:15:40 +08:00
|
|
|
When running the API locally with Redis in Docker, you need to set the correct Redis host in your `.env` file:
|
2025-05-18 05:11:37 +08:00
|
|
|
|
2025-04-25 05:15:40 +08:00
|
|
|
- For Docker-to-Docker communication (when running both services in Docker): use `REDIS_HOST=redis`
|
|
|
|
- For local-to-Docker communication (when running API locally): use `REDIS_HOST=localhost`
|
|
|
|
|
2025-05-15 14:29:27 +08:00
|
|
|
### Important: RabbitMQ Host Configuration
|
2025-05-18 05:11:37 +08:00
|
|
|
|
2025-05-15 14:29:27 +08:00
|
|
|
When running the API locally with Redis in Docker, you need to set the correct RabbitMQ host in your `.env` file:
|
2025-05-18 05:11:37 +08:00
|
|
|
|
2025-05-15 14:29:27 +08:00
|
|
|
- For Docker-to-Docker communication (when running both services in Docker): use `RABBITMQ_HOST=rabbitmq`
|
|
|
|
- For local-to-Docker communication (when running API locally): use `RABBITMQ_HOST=localhost`
|
|
|
|
|
2025-04-25 05:15:40 +08:00
|
|
|
Example `.env` configuration for local development:
|
2025-05-18 05:11:37 +08:00
|
|
|
|
|
|
|
```sh
|
2025-04-25 05:15:40 +08:00
|
|
|
REDIS_HOST=localhost (instead of 'redis')
|
|
|
|
REDIS_PORT=6379
|
|
|
|
REDIS_PASSWORD=
|
2025-05-15 14:29:27 +08:00
|
|
|
|
|
|
|
RABBITMQ_HOST=localhost (instead of 'rabbitmq')
|
|
|
|
RABBITMQ_PORT=5672
|
2025-04-25 05:15:40 +08:00
|
|
|
```
|