Claude-skill-registry docker-local-projects
Manage Laravel projects with docker-local - list, create, clone, and open projects
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/docker-local-projects" ~/.claude/skills/majiayu000-claude-skill-registry-docker-local-projects && rm -rf "$T"
manifest:
skills/data/docker-local-projects/SKILL.mdsource content
Docker-Local Projects Skill
Overview
This skill manages Laravel projects within the docker-local environment:
- List all projects
- Create new Laravel projects
- Clone existing projects
- Open projects in browser/IDE
- Configure project settings
Activation
Use this skill when:
- User wants to create a new Laravel project
- User needs to list their projects
- User wants to clone an existing repo
- User wants to open a project
- Managing project configurations
MANDATORY: Prerequisite Check
Before ANY docker-local command, verify installation:
which docker-local > /dev/null 2>&1
If docker-local is NOT found:
- Stop and ask the user if they want to install it
- If yes, install via:
composer global require mwguerra/docker-local - Add to PATH:
export PATH="$HOME/.composer/vendor/bin:$PATH" - Initialize:
docker-local init - Verify:
which docker-local && docker-local --version
Project Commands
List Projects
# List all Laravel projects with status docker-local list # Output shows: # NAME URL STATUS # blog https://blog.test ✓ accessible # api https://api.test ○ DNS ok # shop https://shop.test ✗ DNS not configured
Create New Project
# Create with MySQL (default) docker-local make:laravel myapp # Create with PostgreSQL + pgvector docker-local make:laravel myapp --postgres
What gets created automatically:
- Laravel project via Composer
- Database (MySQL or PostgreSQL) + testing database
- MinIO bucket for file storage
- Unique Redis DB numbers for cache/session/queue
- Unique cache prefix and Reverb credentials
- Configured
with all Docker service connections.env
Isolation settings created:
Creating Laravel project: myapp Database: MySQL Redis DBs: cache=0, session=1, queue=2 ✓ Project created successfully! ✓ MySQL database 'myapp' created ✓ MySQL database 'myapp_testing' created ✓ MinIO bucket 'myapp' created ✓ .env configured with complete isolation Isolation settings (multi-project): ✓ Database: myapp (MySQL) ✓ Redis Cache DB: 0 ✓ Redis Session DB: 1 ✓ Redis Queue DB: 2 ✓ Cache Prefix: myapp_ ✓ MinIO Bucket: myapp ✓ Reverb App ID: 847291
Clone Existing Project
# Clone from GitHub/GitLab docker-local clone git@github.com:user/repo.git # Clone with custom name docker-local clone git@github.com:user/repo.git myapp
Clone process:
- Clones repository to ~/projects/
- Creates database
- Installs dependencies
- Generates unique isolation settings
- Runs migrations
Open Project
# Open current project in browser docker-local open # Open specific project docker-local open myapp # Open services docker-local open --mail # Mailpit docker-local open --minio # MinIO Console docker-local open --traefik # Traefik Dashboard
Open in IDE
# Open in VS Code (default) docker-local ide # Open in PhpStorm docker-local ide phpstorm # Open specific project docker-local ide code myapp
Project Structure
Each project in ~/projects/ is automatically configured:
~/projects/ ├── blog/ → https://blog.test │ ├── .env # Project-specific Laravel config │ ├── app/ │ └── ... ├── api/ → https://api.test └── shop/ → https://shop.test
Project .env Configuration
Projects get these Docker-specific settings:
# Database - use Docker service names DB_HOST=mysql # or 'postgres' for PostgreSQL DB_PORT=3306 # or 5432 for PostgreSQL DB_DATABASE=myapp DB_USERNAME=laravel DB_PASSWORD=secret # Redis - use Docker service name REDIS_HOST=redis REDIS_PORT=6379 # IMPORTANT: Unique isolation values CACHE_PREFIX=myapp_ REDIS_CACHE_DB=0 REDIS_SESSION_DB=1 REDIS_QUEUE_DB=2 # Mail - use Mailpit MAIL_HOST=mailpit MAIL_PORT=1025 # MinIO/S3 AWS_ENDPOINT=http://minio:9000 AWS_ACCESS_KEY_ID=minio AWS_SECRET_ACCESS_KEY=minio123 AWS_BUCKET=myapp AWS_USE_PATH_STYLE_ENDPOINT=true
Existing Project Migration
For projects not created by docker-local:
1. Copy Project
cp -r /path/to/project ~/projects/myapp cd ~/projects/myapp
2. Create Database
docker-local db:create myapp
3. Update .env
# Edit .env with Docker service names: DB_HOST=mysql # NOT localhost REDIS_HOST=redis # NOT localhost MAIL_HOST=mailpit # NOT localhost
4. Set Unique Isolation
# Generate unique settings docker-local make:env # Or manually set: CACHE_PREFIX=myapp_ REDIS_CACHE_DB=3 # Different from other projects REDIS_SESSION_DB=4 REDIS_QUEUE_DB=5
5. Install & Migrate
docker exec -w /var/www/myapp php composer install docker exec -w /var/www/myapp php php artisan migrate
Check Project Configuration
# Verify current project .env docker-local env:check # Audit ALL projects for conflicts docker-local env:check --all
Conflict detection example:
┌─ Cross-Project Conflicts ─────────────────────────────────────────┐ ⚠ CACHE_PREFIX conflict with 'other-project' Both projects use: laravel_cache_ Why: Cache data will be shared/corrupted between projects Fix: Change CACHE_PREFIX in one of the projects' .env files
Best Practices
Naming Conventions
- Use lowercase names
- Use hyphens for multi-word names:
my-blog - Keep names short but descriptive
Before Creating Projects
- Ensure Docker is running:
docker-local status - Check for existing projects:
docker-local list - Verify DNS is configured:
docker-local doctor
After Creating Projects
- Verify accessibility:
docker-local open - Check .env configuration:
docker-local env:check - Run initial migrations:
docker-local db:fresh
$ARGUMENTS