DockerKit is a modern development environment enabling you to run, configure, and manage multiple Laravel/Symfony (and more) projects in Docker with minimal effort and maximum automation.
- Automatic project scanning for
.localhostprojects in parent directory - Framework detection based on project structure
- SSL certificate generation using mkcert for secure HTTPS development
- Nginx configuration auto-generated from project-specific templates
- Multi-project .env scanning across all
.localhostdirectories - Database auto-creation for PostgreSQL and MySQL with user management
- Redis ACL setup with multi-password configuration per project
- RabbitMQ management with user, virtual host, and permission setup
- MinIO bucket creation with user management and policy configuration
- Interactive project creation for Laravel and Symfony frameworks
- Database backup/restore with step-by-step workflow and compression support
- Enhanced workspace with modern terminal, fuzzy search, and smart autocompletion
- Docker network aliases for seamless microservice communication
- Docker & Docker Compose for container orchestration
- Homebrew (macOS only) - required for automatic mkcert installation
# 1. Clone repository to your projects directory
cd /path/to/your/projects
git clone https://github.com/abordage/dockerkit.git
# 2. Navigate to DockerKit directory
cd dockerkit
# 3. Run automatic environment setup
make setupDockerKit automatically installs required development tools during setup:
- mkcert - for trusted SSL certificates (installed automatically)
- On macOS: via Homebrew (
brew install mkcert) - On Linux/WSL2: from GitHub releases
- Certificate Authority is configured automatically
- On macOS: via Homebrew (
- dk command - for quick workspace access from any project directory
No manual installation required - everything is handled by make setup.
DockerKit automatically discovers projects in the parent directory:
/your/projects/directory/
├── dockerkit/ # This repository
├── myapp.localhost/ # Laravel project
│ ├── artisan # ← Laravel indicator
│ ├── composer.json # ← Contains "laravel/framework"
│ └── public/index.php # ← Standard Laravel structure
├── api.localhost/ # Symfony project
│ ├── bin/console # ← Symfony indicator
│ ├── composer.json # ← Contains "symfony/framework-bundle"
│ └── public/index.php # ← Standard Symfony structure
├── blog.localhost/ # WordPress project
│ ├── wp-config.php # ← WordPress indicator
│ └── wp-content/ # ← WordPress structure
├── legacy.localhost/ # PHP project
│ └── index.php # ← Basic PHP project
├── docs/ # Ignored: no .localhost suffix
└── backup-files/ # Ignored: no .localhost suffix
Modern browsers automatically resolve .localhost domains to 127.0.0.1 according to RFC standards:
- RFC 2606 — Reserved Top Level DNS Names: Defines
.localhostas a reserved domain - RFC 6761 — Special-Use Top Level Domains:
.localhostshould resolve to loopback addresses - RFC 6762 — Multicast DNS: Confirms
.localhostspecial handling in modern systems
This eliminates the need for hosts file modifications or DNS configuration.
# Create new project interactively
make project
# Choose project type (Laravel/Symfony)
# Enter project name (e.g., myapp.localhost)
# Project will be available at https://myapp.localhost# 1. Clone your existing projects to the parent directory
cd /path/to/your/projects # Same level as dockerkit/
git clone https://github.com/yourorg/myapp.git myapp.localhost
git clone https://github.com/yourorg/api.git api.localhost
# 2. Reconfigure DockerKit to detect new projects
cd dockerkit
make setupCustomize enabled services in .env:
# Choose which services to start (comma-separated)
ENABLE_SERVICES="nginx,php-fpm,workspace,postgres,mysql,redis,rabbitmq,minio"
# Customize PHP extensions
DEPENDENCY_PHP_EXTENSIONS="gd,imagick,redis,xdebug,opcache"For private repositories, configure workspace/auth.json:
{
"github-oauth": {
"github.com": "ghp_your_personal_access_token"
},
"gitlab-token": {
"gitlab.com": "glpat-your_project_access_token"
}
}Or configure directly in workspace container:
dk # Access workspace container
composer config --global repositories.repo-name composer https://packages.example.com
# See: https://getcomposer.org/doc/05-repositories.mdMount SSH keys for deployment and git operations:
# Option 1: Copy keys to workspace/ssh/
cp ~/.ssh/* workspace/ssh/
# Option 2: Mount system SSH (in .env)
HOST_SSH_PATH=~/.ssh
make restart # Apply changesDockerKit provides a comprehensive set of Make targets for streamlined development:
# Environment Management
make setup # Complete environment setup (run once)
make start # Start selected services with network aliases
make stop # Stop all services
make restart # Restart selected services
make status # Show current system status
# Project Management
make project # Create new project (Laravel/Symfony)
make dump # Interactive database backup/restore tool
# Maintenance
make update # Update DockerKit and rebuild containers
make reset # Reset project to initial state
make lint # Run all quality checks (Dockerfiles, bash scripts)
make tmp-clean # Clean /tmp inside workspace containerThe workspace container provides an enhanced terminal experience:
Ctrl+T— Interactive file finder (fzf)Ctrl+R— Fuzzy command history search- Modern prompt — Starship with project context and git status
Bash completion available for all development tools:
- Composer commands and packages
- npm and Node.js tools
- Git branches and commands
- Laravel Artisan commands
- Symfony Console commands
Pre-configured shortcuts for common tasks:
# Laravel/PHP shortcuts
art # php artisan
fresh # php artisan migrate:fresh
seed # php artisan db:seed
# Development tools
pint # ./vendor/bin/pint
pest # ./vendor/bin/pest
phpstan # ./vendor/bin/phpstan
# File operations
ll # ls -alF --color=auto
tree # tree -I vendor -CAccess management interfaces for development services:
| Service | URL | Credentials | Purpose |
|---|---|---|---|
| Mailpit | http://localhost:8125 | - | Email testing |
| MinIO Console | http://localhost:9001 | dockerkit / dockerkit | File storage |
| RabbitMQ | http://localhost:15672 | dockerkit / dockerkit | Message queues |
| Elasticvue | http://localhost:9210 | - | Elasticsearch UI |
| Portainer | http://localhost:9010 | Setup on first visit | Docker management |
- OpenAPI Generator CLI — Generate client libraries and server stubs from OpenAPI specs
- Vacuum — OpenAPI specification linter and quality checker
- Composer with global packages (normalize, changelogs)
- Deployer — Modern deployment tool with zero-downtime deployments
- Laravel Installer — Quick Laravel project scaffolding
- Symfony CLI — Official Symfony command-line tool
- PostgreSQL client (
psql) - MySQL client (
mysql) - Redis tools (
redis-cli)
- fzf — Interactive fuzzy finder for file search and command history
- Starship — Modern shell prompt with project context
- yq — YAML processor for configuration management
| Feature | DockerKit | Laradock |
|---|---|---|
| Project Discovery | ✅ Automatic scanning and detection | ❌ Manual configuration |
| SSL Certificates | ✅ Automatic SSL generation with mkcert | ❌ Manual SSL setup |
| Nginx Configuration | ✅ Auto-generated configs | ❌ Manual nginx configuration |
| MinIO Management | ✅ Automatic user/bucket creation based on project .env files | ❌ Manual bucket setup |
| Database Creation | ✅ Automatic database/user creation based on project .env files | ❌ Manual database setup |
| Container Optimization | ✅ Multi-stage builds, smaller images, caching | |
| Project Maturity | ✅ Battle-tested, proven by time | |
| Available Services | ✅ Extensive service library | |
| Community Support | ✅ Large established community |
- Automated workflow for local development
- Modern Docker practices with optimized performance
- Focus on essential tools without complexity
- Extensive service ecosystem out of the box
- Proven stability and mature codebase
- Large community support and resources
DockerKit is actively developed with exciting features planned for future releases:
- Improve documentation — Comprehensive documentation with examples and clear structure
- Configure supervisor for process management — Advanced process monitoring and management
- Add RoadRunner support — High-performance PHP application server as alternative to PHP-FPM
- Add FrankenPHP support — Modern PHP runtime built on top of Caddy web server
- Add Laravel Horizon support — Queue monitoring and management dashboard
- Add support for Node.js projects — Automatic detection and configuration for Node.js applications
- Add MongoDB database support — Automatic collection setup with user management
- Add pgBadger support — PostgreSQL log analysis and performance insights
Please see CONTRIBUTING.md for details.
Please review security policy on how to report security vulnerabilities.
$$$$$$$\ $$\ $$\ $$\ $$\ $$\
$$ __$$\ $$ | $$ | $$ |\__| $$ |
$$ | $$ | $$$$$$\ $$$$$$$\ $$ | $$\ $$$$$$\ $$$$$$\ $$ |$$ / $$\ $$$$$$\
$$ | $$ |$$ __$$\ $$ _____|$$ | $$ |$$ __$$\ $$ __$$\ $$$$$ / $$ |\_$$ _|
$$ | $$ |$$ / $$ |$$ / $$$$$$ / $$$$$$$$ |$$ | \__|$$ $$< $$ | $$ |
$$ | $$ |$$ | $$ |$$ | $$ _$$< $$ ____|$$ | $$ |\$$\ $$ | $$ |$$\
$$$$$$$ |\$$$$$$ |\$$$$$$$\ $$ | \$$\ \$$$$$$$\ $$ | $$ | \$$\ $$ | \$$$$ |
\_______/ \______/ \_______|\__| \__| \_______|\__| \__| \__|\__| \____/
The MIT License (MIT)
