Initial commit
This commit is contained in:
288
references/advanced-options.md
Normal file
288
references/advanced-options.md
Normal file
@@ -0,0 +1,288 @@
|
||||
## Advanced Options
|
||||
|
||||
### Custom PHP Version
|
||||
|
||||
If extension requires different PHP version:
|
||||
```yaml
|
||||
# In .ddev/config.yaml
|
||||
php_version: "8.1" # or "8.3"
|
||||
```
|
||||
|
||||
### Database Selection (Tiered Approach)
|
||||
|
||||
The skill uses **intelligent database selection** based on extension complexity.
|
||||
|
||||
**🎯 Tier 1: SQLite (Simple Extensions - Development Optimized)**
|
||||
|
||||
**Recommended for:**
|
||||
- ✅ Extensions using only TYPO3 Core APIs (Extbase, FAL, DataHandler)
|
||||
- ✅ No custom database tables (ext_tables.sql absent/empty)
|
||||
- ✅ No raw SQL queries
|
||||
- ✅ Category: plugin, fe, be, misc
|
||||
- ✅ Example: rte_ckeditor_image, simple content elements, frontend plugins
|
||||
|
||||
**Benefits:**
|
||||
- ⚡ **Startup**: 5-10 seconds faster per ddev start
|
||||
- 💾 **RAM**: 900 MB saved (no MariaDB container)
|
||||
- 💿 **Disk**: 744 MB saved (no container image)
|
||||
- 🔒 **Isolation**: Perfect v11/v12/v13 separation (separate .sqlite files)
|
||||
|
||||
**Configuration:**
|
||||
```yaml
|
||||
# No .ddev/config.yaml database config needed
|
||||
# TYPO3 installation uses SQLite automatically
|
||||
```
|
||||
|
||||
**Critical Warnings:**
|
||||
- ⚠️ **Development ONLY** - Never use SQLite in production
|
||||
- ⚠️ **Switch to MariaDB** if you add custom SQL queries or tables
|
||||
- ⚠️ **Final Testing** - Run compatibility tests on MariaDB before release
|
||||
|
||||
**🔧 Tier 2: MariaDB 10.11 (Complex Extensions - Production Parity)**
|
||||
|
||||
**Recommended for:**
|
||||
- ❌ Extensions with custom database tables (ext_tables.sql present)
|
||||
- ❌ Extensions using raw SQL queries
|
||||
- ❌ Performance-critical operations
|
||||
- ❌ Category: services, module
|
||||
- ❌ Unknown complexity (safe default)
|
||||
|
||||
**Benefits:**
|
||||
- ✅ **Production Standard**: 95%+ TYPO3 hosting uses MariaDB
|
||||
- ✅ **Extension Compatibility**: 99%+ TYPO3 extensions tested on MariaDB
|
||||
- ✅ **Performance**: 13-36% faster than MySQL 8 for transactional workloads
|
||||
- ✅ **TYPO3 Ecosystem**: Documentation, tutorials, community standard
|
||||
|
||||
**Configuration:**
|
||||
```yaml
|
||||
# In .ddev/config.yaml
|
||||
database:
|
||||
type: mariadb
|
||||
version: "10.11"
|
||||
```
|
||||
|
||||
**🌐 Tier 3: PostgreSQL 16 (Specialized Requirements)**
|
||||
|
||||
**Recommended for:**
|
||||
- 🎯 GIS/spatial data (PostGIS)
|
||||
- 🎯 Advanced analytics or complex queries
|
||||
- 🎯 Explicit PostgreSQL requirement
|
||||
|
||||
**Configuration:**
|
||||
```yaml
|
||||
# In .ddev/config.yaml
|
||||
database:
|
||||
type: postgres
|
||||
version: "16"
|
||||
```
|
||||
|
||||
**🏢 Tier 4: MySQL 8.0 (Corporate/Oracle Ecosystem)**
|
||||
|
||||
**Recommended for:**
|
||||
- 🏢 Corporate environments requiring Oracle integration
|
||||
- 🏢 Production specifically uses MySQL 8
|
||||
|
||||
**Configuration:**
|
||||
```yaml
|
||||
# In .ddev/config.yaml
|
||||
database:
|
||||
type: mysql
|
||||
version: "8.0"
|
||||
```
|
||||
|
||||
**Auto-Detection Logic:**
|
||||
|
||||
The skill will analyze your extension and suggest the appropriate tier:
|
||||
|
||||
```yaml
|
||||
SQLite Detection (Tier 1):
|
||||
✓ ext_tables.sql: Absent or empty
|
||||
✓ Raw SQL patterns: None found
|
||||
✓ File size: < 1 MB
|
||||
✓ Category: plugin, fe, be, misc
|
||||
→ Suggests: SQLite (development-optimized)
|
||||
|
||||
MariaDB Detection (Tier 2):
|
||||
✗ ext_tables.sql: Present with custom tables
|
||||
✗ Raw SQL patterns: Found
|
||||
✗ File size: > 1 MB
|
||||
✗ Category: services, module
|
||||
→ Suggests: MariaDB 10.11 (production-realistic)
|
||||
|
||||
PostgreSQL Detection (Tier 3):
|
||||
• Extension name: Contains "postgres", "pgsql", "postgis"
|
||||
• composer.json: Requires "typo3/cms-pgsql"
|
||||
• Keywords: "GIS", "spatial", "analytics"
|
||||
→ Suggests: PostgreSQL 16 (specialized)
|
||||
```
|
||||
|
||||
**Alternative Options:**
|
||||
|
||||
**MariaDB 11** - Forward-looking performance:
|
||||
```yaml
|
||||
database:
|
||||
type: mariadb
|
||||
version: "11.4"
|
||||
```
|
||||
- Latest features (+40% performance vs 10.11)
|
||||
- Forward compatibility testing
|
||||
|
||||
**For detailed rationale**, see: `docs/adr/0002-mariadb-default-with-database-alternatives.md`
|
||||
|
||||
### XDebug Setup
|
||||
|
||||
Enable XDebug for debugging:
|
||||
```bash
|
||||
ddev xdebug on
|
||||
```
|
||||
|
||||
### Customize TYPO3 Versions
|
||||
|
||||
Edit `.ddev/docker-compose.web.yaml` and installation scripts to add/remove versions.
|
||||
|
||||
### Database Access
|
||||
|
||||
```bash
|
||||
# Direct database access
|
||||
ddev mysql
|
||||
|
||||
# Export database
|
||||
ddev export-db > backup.sql.gz
|
||||
|
||||
# Import database
|
||||
ddev import-db --file=backup.sql.gz
|
||||
```
|
||||
|
||||
### Optional Services
|
||||
|
||||
The skill includes optional service templates for enhanced TYPO3 development:
|
||||
|
||||
#### Valkey / Redis (Caching)
|
||||
|
||||
Add high-performance caching to TYPO3 using **Valkey** (default) or **Redis** (alternative).
|
||||
|
||||
**Default: Valkey 8** (Open Source, Future-Proof)
|
||||
|
||||
```bash
|
||||
# Copy Valkey template (default)
|
||||
cp .ddev/templates/docker-compose.services.yaml.optional .ddev/docker-compose.services.yaml
|
||||
cp .ddev/templates/config.redis.php.example .ddev/config.redis.php.example
|
||||
|
||||
# Restart DDEV
|
||||
ddev restart
|
||||
|
||||
# Test Valkey (wire-compatible with Redis)
|
||||
ddev ssh
|
||||
redis-cli -h valkey ping # Should return: PONG
|
||||
```
|
||||
|
||||
**Alternative: Redis 7** (For Legacy Production Parity)
|
||||
|
||||
```bash
|
||||
# Use Redis 7 alternative template
|
||||
cp .ddev/templates/docker-compose.services-redis.yaml.optional .ddev/docker-compose.services.yaml
|
||||
|
||||
# Restart DDEV
|
||||
ddev restart
|
||||
|
||||
# Test Redis
|
||||
ddev ssh
|
||||
redis-cli -h redis ping # Should return: PONG
|
||||
```
|
||||
|
||||
**Why Valkey Default?**
|
||||
|
||||
Valkey is wire-protocol compatible with Redis but offers:
|
||||
- ✅ **True Open Source**: BSD-3-Clause license (Redis 7.4+ is proprietary)
|
||||
- ✅ **Industry Adoption**: AWS, Google Cloud, Oracle backing (Linux Foundation project)
|
||||
- ✅ **Smaller Image**: 69.7 MB (vs 100 MB Redis 8, 60.6 MB Redis 7)
|
||||
- ✅ **Cost-Effective**: 20-33% cheaper on AWS ElastiCache
|
||||
- ✅ **Future-Proof**: Strategic direction for cloud/managed hosting
|
||||
|
||||
**When to Use Redis 7 Instead:**
|
||||
- Your production environment explicitly uses Redis 7.x
|
||||
- Corporate policy requires battle-tested technology only (Redis has 15 years vs Valkey 1 year)
|
||||
- Exact production-development parity needed with existing infrastructure
|
||||
|
||||
**Technical Details:**
|
||||
|
||||
**Valkey**: `valkey/valkey:8-alpine` (69.7 MB)
|
||||
**Redis**: `redis:7-alpine` (60.6 MB)
|
||||
**Memory**: 256MB with LRU eviction policy
|
||||
**Port**: 6379 (same for both)
|
||||
|
||||
**Configuration**: Both use identical TYPO3 configuration. Add cache backend to `AdditionalConfiguration.php` (see `.ddev/config.redis.php.example`)
|
||||
|
||||
**For detailed rationale**, see: `docs/adr/0001-valkey-default-with-redis-alternative.md`
|
||||
|
||||
#### MailPit (Email Testing)
|
||||
|
||||
Catch all emails sent by TYPO3 for testing:
|
||||
|
||||
```bash
|
||||
# Already included in docker-compose.services.yaml.optional
|
||||
# Access Web UI after ddev restart:
|
||||
# http://{{DDEV_SITENAME}}.ddev.site:8025
|
||||
```
|
||||
|
||||
**Image**: `axllent/mailpit:latest`
|
||||
**SMTP**: `mailpit:1025` (automatically configured in docker-compose.web.yaml)
|
||||
|
||||
#### Ofelia (TYPO3 Scheduler Automation)
|
||||
|
||||
Automate TYPO3 scheduler tasks with **ghcr.io/netresearch/ofelia**:
|
||||
|
||||
```bash
|
||||
# Copy Ofelia configuration
|
||||
cp .ddev/templates/docker-compose.ofelia.yaml.optional .ddev/docker-compose.ofelia.yaml
|
||||
|
||||
# Restart DDEV
|
||||
ddev restart
|
||||
|
||||
# View scheduler logs
|
||||
docker logs -f ddev-{{DDEV_SITENAME}}-ofelia
|
||||
```
|
||||
|
||||
**Image**: `ghcr.io/netresearch/ofelia:latest` (GitHub Container Registry - TYPO3-optimized fork)
|
||||
**Default Schedule**: TYPO3 scheduler runs every 1 minute for all versions
|
||||
**Cache Warmup**: Every 1 hour for v13
|
||||
|
||||
**DDEV Naming**: Uses `docker-compose.*.yaml` naming (DDEV v1.24.8 requirement, not Compose v2 standard)
|
||||
**No Version Field**: All service files omit `version:` declaration per Compose v2 spec
|
||||
|
||||
#### Shell Aliases
|
||||
|
||||
Add convenient shortcuts:
|
||||
|
||||
```bash
|
||||
# Copy bash additions
|
||||
cp .ddev/templates/homeadditions/.bashrc_additions.optional .ddev/homeadditions/.bashrc_additions
|
||||
|
||||
# Restart DDEV to load aliases
|
||||
ddev restart
|
||||
|
||||
# Available aliases:
|
||||
ddev ssh
|
||||
t3-scheduler-v11 # Run TYPO3 11 scheduler
|
||||
t3-scheduler-v12 # Run TYPO3 12 scheduler
|
||||
t3-scheduler-v13 # Run TYPO3 13 scheduler
|
||||
t3-scheduler-all # Run scheduler on all versions
|
||||
redis # Access Redis CLI
|
||||
t3-cache-flush-v13 # Flush TYPO3 13 cache
|
||||
```
|
||||
|
||||
#### Complete Services Documentation
|
||||
|
||||
For detailed service configuration, troubleshooting, and performance tuning:
|
||||
|
||||
```bash
|
||||
# Copy services README
|
||||
cp .ddev/templates/README-SERVICES.md.optional .ddev/README-SERVICES.md
|
||||
```
|
||||
|
||||
**Important Notes**:
|
||||
- DDEV v1.24.8 requires `docker-compose.*.yaml` naming (auto-loads from `.ddev/`)
|
||||
- Ofelia image: `ghcr.io/netresearch/ofelia:latest` (not Docker Hub)
|
||||
- Ofelia command: `daemon --docker-events` (not `--docker`)
|
||||
- Redis config must NOT be `.yaml` (DDEV tries to parse it as config)
|
||||
|
||||
Reference in New Issue
Block a user