This guide explains the different deployment options available for SurfSense using Docker Compose.
## Deployment Options
SurfSense uses a flexible Docker Compose configuration that allows you to easily switch between deployment modes without manually editing files. Our approach uses Docker's built-in override functionality with two configuration files:
1.**docker-compose.yml**: Contains essential core services (database and pgAdmin)
2.**docker-compose.override.yml**: Contains application services (frontend and backend)
This structure provides several advantages:
- No need to comment/uncomment services manually
- Clear separation between core infrastructure and application services
- Easy switching between development and production environments
## Deployment Modes
### Full Stack Mode (Development)
This mode runs everything: frontend, backend, database, and pgAdmin. It's ideal for development environments where you need the complete application stack.
```bash
# Both files are automatically used (docker-compose.yml + docker-compose.override.yml)
This mode runs only the database and pgAdmin services. It's suitable for production environments where you might want to deploy the frontend and backend separately or need to run database migrations.