The application uses a multi-container Docker architecture with specialized services.
| Service | Role | Description |
|---|---|---|
api |
Web Server | Serves the Laravel application via Apache |
scheduler |
Task Scheduler | Runs Laravel's scheduled tasks |
queue |
Default Queue Worker | Processes jobs from the default queue, game data import, comm-links, etc. |
queue_expensive |
Specialized Queue Worker | Processes expensive queue jobs, image hash calculation |
db |
Database | PostgreSQL database server |
The CONTAINER_ROLE environment variable determines what each container runs:
app: Starts Apache to serve web requestsscheduler: Runsphp artisan schedule:workto execute scheduled commandsqueue: Runsphp artisan queue:workto process queued jobs- Customize with:
QUEUE_NAME,QUEUE_TRIES,QUEUE_MAX_JOBS,QUEUE_SLEEP
- Customize with:
The application uses multiple queue workers for specialized workloads:
- Default Queue (
queueservice): General background jobs (imports, syncs, translations) - Expensive Queue (
queue_expensiveservice): Heavy tasks like image hashing and similarity computation
| Mount | Purpose |
|---|---|
./storage |
Laravel storage (logs, cache, uploaded files, API data submodules) |
./var/lib/db |
PostgreSQL data directory |
For production deployments with automatic HTTPS:
docker compose -f compose.yaml -f compose.traefik.yaml up -dThis enables automatic SSL certificate management and reverse proxy capabilities.