Quick Start
Get Duckling running with Docker in under 5 minutes.Prerequisites
- Docker and Docker Compose installed
- pnpm package manager
- MySQL database to replicate from
Step-by-Step Setup
Configure Environment
Copy the example environment file and configure your settings:Edit
.env and set the required values:Start Services
Start the DuckDB server and frontend with Docker Compose:This starts two services:
- Server:
http://localhost:3001(backend API) - Frontend:
http://localhost:3000(Nuxt 4 dashboard) - MySQL Protocol:
localhost:3307(MySQL wire protocol)
Trigger Initial Sync
Open the dashboard at
http://localhost:3000 and trigger your first full sync, or use the API:The first sync may take some time depending on your database size. Monitor progress in the dashboard at
http://localhost:3000/logs.What’s Next?
Your Duckling server is now running with:- Automatic incremental sync every 15 minutes (if
AUTO_START_SYNC=true) - REST API endpoints for querying
- MySQL wire protocol on port 3307
- Web dashboard for monitoring and queries
Configuration
Learn about all configuration options and tuning parameters
API Reference
Explore REST endpoints and WebSocket SDK
Deployment
Production deployment, security, and backups
Type Support
MySQL to DuckDB type mapping and limitations
Docker Services
Thedocker-compose.yml defines two services:
DuckDB Server
- Container:
duckling-server - Ports:
3001:3000(HTTP),3307:3307(MySQL protocol) - Volumes:
./data:/app/data,./logs:/app/logs - Hot reload enabled for development
DuckDB Frontend
- Container:
duckling-frontend - Port:
3000:3000 - Depends on:
duckdb-server - Hot reload enabled for development
Troubleshooting
Connection Issues
If you can’t connect to MySQL:- Verify your
MYSQL_CONNECTION_STRINGis correct - Check MySQL host is reachable from Docker container
- Ensure MySQL user has SELECT permissions on target database
Sync Errors
Check logs for detailed error messages:Port Conflicts
If ports 3000, 3001, or 3307 are already in use, editdocker-compose.yml: