Profiles Configuration
Profiles define different environment configurations for various development scenarios.
Basic Profile
profiles:
dev:
description: Development environment
size: medium
apps:
- frontend
- backendFull Profile Configuration
profiles:
full-stack:
# Metadata
description: Complete development environment
extends: base # Inherit from another profile
# Resources
size: large # Server size
# Apps to include
apps:
- frontend
- backend
- worker
# Connection configuration
default_connection: local # Default for all connections
connections: # Override specific connections
frontend:
api: local
backend:
mongodb: local
redis: staging # Use staging Redis
# Database settings
database:
mode: copy # copy, local, snapshot, remote
source: staging # Source environment
include: # Only these collections
- users
- products
exclude: # Skip these collections
- logs
- sessions
# Additional environment variables
env:
DEBUG: "true"
LOG_LEVEL: debug
# Git settings
branch: develop # Default branchCommon Profile Patterns
Quick Development
Minimal setup for frontend work:
profiles:
quick:
description: Frontend only, use staging backend
size: small
apps:
- frontend
default_connection: stagingFull Stack
Complete local environment:
profiles:
full:
description: All apps with local everything
size: large
apps:
- frontend
- backend
- worker
default_connection: local
database:
mode: copy
source: stagingBackend Only
For API development:
profiles:
api-dev:
description: Backend services only
size: medium
apps:
- backend
default_connection: local
database:
mode: copy
source: stagingTesting
For integration testing:
profiles:
test:
description: Testing environment
size: medium
apps:
- frontend
- backend
default_connection: local
database:
mode: local # Empty database
env:
NODE_ENV: test
CI: "true"Profile Inheritance
Use extends to build on other profiles:
profiles:
base:
size: medium
apps:
- backend
default_connection: local
with-frontend:
extends: base
apps:
- frontend
- backend # Include backend from base
large-stack:
extends: with-frontend
size: large # Override just the size
database:
mode: copy
source: stagingInheritance chain: large-stack → with-frontend → base
Connection Overrides
Fine-tune connections per profile:
profiles:
hybrid:
description: Local backend, staging external services
apps:
- frontend
- backend
default_connection: local
connections:
frontend:
api: local # Local API
analytics: staging # Staging analytics
backend:
mongodb: local # Local database
redis: local
external-api: staging # Staging external APIDatabase Configurations
No Database
profiles:
frontend-only:
database:
mode: noneEmpty Local
profiles:
fresh:
database:
mode: local # Empty MongoDBCopy from Source
profiles:
with-data:
database:
mode: copy
source: staging # Copy from staging
exclude:
- audit_logs
- sessionsFrom Snapshot
profiles:
from-backup:
database:
mode: snapshot # Restore from backupRemote Connection
profiles:
staging-db:
database:
mode: remote # Connect to remote DBUsing Profiles
# Create with specific profile
gb create my-env --profile full-stack
# Override profile settings
gb create my-env --profile quick --size medium
# List available profiles
gb profiles list
# Show profile details
gb profiles show full-stack
# Compare profiles
gb config diff quick full-stackDefault Profile
If no profile is specified, Genbox uses:
- Profile named
defaultif it exists - First profile in the list
- Built-in defaults
profiles:
default: # This is used when no profile specified
size: medium
apps:
- frontend
- backendBest Practices
- Name descriptively: Use names that explain the purpose
- Add descriptions: Document what each profile is for
- Use inheritance: Avoid duplicating configuration
- Keep it simple: Don’t over-engineer profiles
- Test profiles: Validate before using in production
Last updated on