{"id":28919688,"url":"https://github.com/abordage/dockerkit","last_synced_at":"2026-02-01T16:02:27.886Z","repository":{"id":300430590,"uuid":"1002038149","full_name":"abordage/dockerkit","owner":"abordage","description":"⛴️ Dev Orchestration Container Kit. Simplified Docker environment for PHP, Laravel, Symfony projects. Fast setup, essential containers only.","archived":false,"fork":false,"pushed_at":"2025-06-21T17:02:22.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-21T17:24:13.110Z","etag":null,"topics":["developer-tools","development-environment","docker-compose","docker-container","docker-image","dockerfile"],"latest_commit_sha":null,"homepage":"https://abordage.dev","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abordage.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-14T15:26:44.000Z","updated_at":"2025-06-21T17:02:25.000Z","dependencies_parsed_at":"2025-06-21T17:24:19.472Z","dependency_job_id":"9bde7960-de15-43a4-aa2e-a8366f6ad98d","html_url":"https://github.com/abordage/dockerkit","commit_stats":null,"previous_names":["abordage/dockerkit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abordage/dockerkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abordage%2Fdockerkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abordage%2Fdockerkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abordage%2Fdockerkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abordage%2Fdockerkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abordage","download_url":"https://codeload.github.com/abordage/dockerkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abordage%2Fdockerkit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261233072,"owners_count":23128191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["developer-tools","development-environment","docker-compose","docker-container","docker-image","dockerfile"],"created_at":"2025-06-22T04:00:38.012Z","updated_at":"2025-10-29T17:04:49.462Z","avatar_url":"https://github.com/abordage.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--suppress HtmlDeprecatedAttribute, HtmlUnknownAnchorTarget --\u003e\n\n# 🚀 Modern Docker Stack for Local Development\n\n![Release](https://img.shields.io/github/v/release/abordage/dockerkit)\n![Hadolint Status](https://img.shields.io/github/actions/workflow/status/abordage/dockerkit/hadolint.yml?label=hadolint)\n![Shellcheck Status](https://img.shields.io/github/actions/workflow/status/abordage/dockerkit/shellcheck.yml?label=shellcheck)\n![License](https://img.shields.io/github/license/abordage/dockerkit)\n\nDockerKit 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.\n\n![dockerkit-setup.gif](.github/images/dockerkit-setup.gif)\n\n## Features\n\n### Zero-Configuration Discovery\n\n- **Automatic project scanning** for `.localhost` projects in parent directory\n- **Framework detection** based on project structure\n- **SSL certificate generation** using mkcert for secure HTTPS development\n- **Nginx configuration** auto-generated from project-specific templates\n\n### Service Auto-Configuration\n\n- **Multi-project .env scanning** across all `.localhost` directories\n- **Database auto-creation** for PostgreSQL and MySQL with user management\n- **Redis ACL setup** with multi-password configuration per project\n- **RabbitMQ management** with user, virtual host, and permission setup\n- **MinIO bucket creation** with user management and policy configuration\n\n### Developer Productivity Tools\n\n- **Interactive project creation** for Laravel and Symfony frameworks\n- **Database backup/restore** with step-by-step workflow and compression support\n- **Enhanced workspace** with modern terminal, fuzzy search, and smart autocompletion\n- **Docker network aliases** for seamless microservice communication\n\n## Table of Contents\n\n1. [Quick Start](#quick-start)\n2. [Configuration](#configuration)\n3. [Usage](#usage)\n4. [Web Consoles](#web-consoles)\n5. [Development Tools](#development-tools)\n\n## Quick Start\n\n### Prerequisites\n\n- **Docker \u0026 Docker Compose** for container orchestration\n- **[Homebrew](https://brew.sh)** (macOS only) - required for automatic mkcert installation\n\n### Installation\n\n```bash\n# 1. Clone repository to your projects directory\ncd /path/to/your/projects\ngit clone https://github.com/abordage/dockerkit.git\n\n# 2. Navigate to DockerKit directory\ncd dockerkit\n\n# 3. Run automatic environment setup\nmake setup\n```\n\n### Automatic Tool Installation\n\nDockerKit automatically installs required development tools during setup:\n\n- **mkcert** - for trusted SSL certificates (installed automatically)\n  - On macOS: via Homebrew (`brew install mkcert`)\n  - On Linux/WSL2: from GitHub releases\n  - Certificate Authority is configured automatically\n- **dk command** - for quick workspace access from any project directory\n\nNo manual installation required - everything is handled by `make setup`.\n\n### Project Structure\n\nDockerKit automatically discovers projects in the parent directory:\n\n```text\n/your/projects/directory/\n├── dockerkit/             # This repository  \n├── myapp.localhost/       # Laravel project\n│   ├── artisan            #   ← Laravel indicator\n│   ├── composer.json      #   ← Contains \"laravel/framework\"\n│   └── public/index.php   #   ← Standard Laravel structure\n├── api.localhost/         # Symfony project  \n│   ├── bin/console        #   ← Symfony indicator\n│   ├── composer.json      #   ← Contains \"symfony/framework-bundle\"\n│   └── public/index.php   #   ← Standard Symfony structure\n├── blog.localhost/        # WordPress project\n│   ├── wp-config.php      #   ← WordPress indicator\n│   └── wp-content/        #   ← WordPress structure\n├── legacy.localhost/      # PHP project\n│   └── index.php          #   ← Basic PHP project\n├── docs/                  # Ignored: no .localhost suffix\n└── backup-files/          # Ignored: no .localhost suffix\n```\n\nModern browsers automatically resolve `.localhost` domains to `127.0.0.1` according to RFC standards:\n\n- [RFC 2606](https://datatracker.ietf.org/doc/html/rfc2606) — Reserved Top Level DNS Names: Defines `.localhost` as a reserved domain\n- [RFC 6761](https://datatracker.ietf.org/doc/html/rfc6761) — Special-Use Top Level Domains: `.localhost` should resolve to loopback addresses\n- [RFC 6762](https://datatracker.ietf.org/doc/html/rfc6762) — Multicast DNS: Confirms `.localhost` special handling in modern systems\n\nThis eliminates the need for hosts file modifications or DNS configuration.\n\n### Create New Project\n\n```bash\n# Create new project interactively\nmake project\n\n# Choose project type (Laravel/Symfony)\n# Enter project name (e.g., myapp.localhost)\n# Project will be available at https://myapp.localhost\n```\n\n### Deploy Existing Projects\n\n```bash\n# 1. Clone your existing projects to the parent directory\ncd /path/to/your/projects  # Same level as dockerkit/\ngit clone https://github.com/yourorg/myapp.git myapp.localhost\ngit clone https://github.com/yourorg/api.git api.localhost\n\n# 2. Reconfigure DockerKit to detect new projects\ncd dockerkit\nmake setup\n```\n\n## Configuration\n\n### Dockerkit Configuration\n\nCustomize enabled services in `.env`:\n\n```bash\n# Choose which services to start (comma-separated)\nENABLE_SERVICES=\"nginx,php-fpm,workspace,postgres,mysql,redis,rabbitmq,minio\"\n\n# Customize PHP extensions\nDEPENDENCY_PHP_EXTENSIONS=\"gd,imagick,redis,xdebug,opcache\"\n```\n\n### Composer Authentication\n\nFor private repositories, configure `workspace/auth.json`:\n\n```json\n{\n  \"github-oauth\": {\n    \"github.com\": \"ghp_your_personal_access_token\"\n  },\n  \"gitlab-token\": {\n    \"gitlab.com\": \"glpat-your_project_access_token\"\n  }\n}\n```\n\nOr configure directly in workspace container:\n\n```bash\ndk  # Access workspace container\ncomposer config --global repositories.repo-name composer https://packages.example.com\n# See: https://getcomposer.org/doc/05-repositories.md\n```\n\n### SSH Configuration\n\nMount SSH keys for deployment and git operations:\n\n```bash\n# Option 1: Copy keys to workspace/ssh/\ncp ~/.ssh/* workspace/ssh/\n\n# Option 2: Mount system SSH (in .env)\nHOST_SSH_PATH=~/.ssh\n\nmake restart  # Apply changes\n```\n\n## Usage\n\nDockerKit provides a comprehensive set of Make targets for streamlined development:\n\n```bash\n# Environment Management\nmake setup         # Complete environment setup (run once)\nmake start         # Start selected services with network aliases\nmake stop          # Stop all services\nmake restart       # Restart selected services\nmake status        # Show current system status\n\n# Project Management  \nmake project       # Create new project (Laravel/Symfony)\nmake dump          # Interactive database backup/restore tool\n\n# Maintenance\nmake update        # Update DockerKit and rebuild containers\nmake reset         # Reset project to initial state\nmake lint          # Run all quality checks (Dockerfiles, bash scripts)\nmake tmp-clean     # Clean /tmp inside workspace container\n```\n\nThe workspace container provides an enhanced terminal experience:\n\n### Interactive Navigation\n\n- **`Ctrl+T`** — Interactive file finder (fzf)\n- **`Ctrl+R`** — Fuzzy command history search\n- **Modern prompt** — Starship with project context and git status\n\n### Smart Autocompletion\n\nBash completion available for all development tools:\n\n- **Composer** commands and packages\n- **npm** and Node.js tools\n- **Git** branches and commands\n- **Laravel Artisan** commands\n- **Symfony Console** commands\n\n### Useful Aliases\n\nPre-configured shortcuts for common tasks:\n\n```bash\n# Laravel/PHP shortcuts\nart             # php artisan\nfresh           # php artisan migrate:fresh\nseed            # php artisan db:seed\n\n# Development tools\npint            # ./vendor/bin/pint\npest            # ./vendor/bin/pest\nphpstan         # ./vendor/bin/phpstan\n\n# File operations\nll              # ls -alF --color=auto\ntree            # tree -I vendor -C\n```\n\n## Web Consoles\n\nAccess management interfaces for development services:\n\n| Service           | URL                      | Credentials           | Purpose           |\n|-------------------|--------------------------|-----------------------|-------------------|\n| **Mailpit**       | \u003chttp://localhost:8125\u003e  | -                     | Email testing     |\n| **MinIO Console** | \u003chttp://localhost:9001\u003e  | dockerkit / dockerkit | File storage      |\n| **RabbitMQ**      | \u003chttp://localhost:15672\u003e | dockerkit / dockerkit | Message queues    |\n| **Elasticvue**    | \u003chttp://localhost:9210\u003e  | -                     | Elasticsearch UI  |\n| **Portainer**     | \u003chttp://localhost:9010\u003e  | Setup on first visit  | Docker management |\n\n## Development Tools\n\n### API Development Tools\n\n- **OpenAPI Generator CLI** — Generate client libraries and server stubs from OpenAPI specs\n- **Vacuum** — OpenAPI specification linter and quality checker\n\n### PHP Development Tools  \n\n- **Composer** with global packages (normalize, changelogs)\n- **Deployer** — Modern deployment tool with zero-downtime deployments\n- **Laravel Installer** — Quick Laravel project scaffolding\n- **Symfony CLI** — Official Symfony command-line tool\n\n### Database Clients\n\n- **PostgreSQL client** (`psql`)\n- **MySQL client** (`mysql`)\n- **Redis tools** (`redis-cli`)\n\n### Modern Terminal Experience\n\n- **fzf** — Interactive fuzzy finder for file search and command history\n- **Starship** — Modern shell prompt with project context\n- **yq** — YAML processor for configuration management\n\n## Comparison\n\n### DockerKit vs Laradock\n\n| Feature                    | DockerKit                                                      | Laradock                        |\n|----------------------------|----------------------------------------------------------------|---------------------------------|\n| **Project Discovery**      | ✅ Automatic scanning and detection                             | ❌ Manual configuration          |\n| **SSL Certificates**       | ✅ Automatic SSL generation with mkcert                         | ❌ Manual SSL setup              |\n| **Nginx Configuration**    | ✅ Auto-generated configs                                       | ❌ Manual nginx configuration    |\n| **MinIO Management**       | ✅ Automatic user/bucket creation based on project .env files   | ❌ Manual bucket setup           |\n| **Database Creation**      | ✅ Automatic database/user creation based on project .env files | ❌ Manual database setup         |\n| **Container Optimization** | ✅ Multi-stage builds, smaller images, caching                  | ⚠️ Traditional Docker approach  |\n| **Project Maturity**       | ⚠️ Modern but newer project                                    | ✅ Battle-tested, proven by time |\n| **Available Services**     | ⚠️ Focused essential toolkit                                   | ✅ Extensive service library     |\n| **Community Support**      | ⚠️ Growing community                                           | ✅ Large established community   |\n\n#### 🎯 Choose DockerKit if you want\n\n- **Automated workflow** for local development\n- **Modern Docker practices** with optimized performance\n- **Focus on essential tools** without complexity\n\n#### 🎯 Choose Laradock if you need\n\n- **Extensive service ecosystem** out of the box\n- **Proven stability** and mature codebase\n- **Large community** support and resources\n\n## Roadmap\n\nDockerKit is actively developed with exciting features planned for future releases:\n\n- [ ] **Improve documentation** — Comprehensive documentation with examples and clear structure\n- [ ] **Configure supervisor for process management** — Advanced process monitoring and management\n- [ ] **Add RoadRunner support** — High-performance PHP application server as alternative to PHP-FPM\n- [ ] **Add FrankenPHP support** — Modern PHP runtime built on top of Caddy web server\n- [ ] **Add Laravel Horizon support** — Queue monitoring and management dashboard\n- [ ] **Add support for Node.js projects** — Automatic detection and configuration for Node.js applications\n- [ ] **Add MongoDB database support** — Automatic collection setup with user management\n- [ ] **Add pgBadger support** — PostgreSQL log analysis and performance insights\n\n## Contributing\n\nPlease see [CONTRIBUTING.md](.github/CONTRIBUTING.md) for details.\n\n## Security\n\nPlease review [security policy](https://github.com/abordage/.github/security/policy)\non how to report security vulnerabilities.\n\n## Credits\n\n- [Pavel Bychko](https://github.com/abordage)\n- [All Contributors](https://github.com/abordage/dockerkit/graphs/contributors)\n\n## License\n\n```text\n$$$$$$$\\                      $$\\                           $$\\   $$\\ $$\\   $$\\     \n$$  __$$\\                     $$ |                          $$ | $$  |\\__|  $$ |    \n$$ |  $$ | $$$$$$\\   $$$$$$$\\ $$ |  $$\\  $$$$$$\\   $$$$$$\\  $$ |$$  / $$\\ $$$$$$\\   \n$$ |  $$ |$$  __$$\\ $$  _____|$$ | $$  |$$  __$$\\ $$  __$$\\ $$$$$  /  $$ |\\_$$  _|  \n$$ |  $$ |$$ /  $$ |$$ /      $$$$$$  / $$$$$$$$ |$$ |  \\__|$$  $$\u003c   $$ |  $$ |    \n$$ |  $$ |$$ |  $$ |$$ |      $$  _$$\u003c  $$   ____|$$ |      $$ |\\$$\\  $$ |  $$ |$$\\ \n$$$$$$$  |\\$$$$$$  |\\$$$$$$$\\ $$ | \\$$\\ \\$$$$$$$\\ $$ |      $$ | \\$$\\ $$ |  \\$$$$  |\n\\_______/  \\______/  \\_______|\\__|  \\__| \\_______|\\__|      \\__|  \\__|\\__|   \\____/ \n\nThe MIT License (MIT)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabordage%2Fdockerkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabordage%2Fdockerkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabordage%2Fdockerkit/lists"}