Marketplace
docker-local-env
Check and manage .env configuration for docker-local projects - conflict detection, unique IDs, isolation settings
$ Installieren
git clone https://github.com/mwguerra/claude-code-plugins /tmp/claude-code-plugins && cp -r /tmp/claude-code-plugins/docker-local/skills/docker-local-env ~/.claude/skills/claude-code-plugins// tip: Run this command in your terminal to install the skill
SKILL.md
name: docker-local-env description: Check and manage .env configuration for docker-local projects - conflict detection, unique IDs, isolation settings
Docker-Local Environment Skill
Overview
This skill manages .env configuration for docker-local projects:
- Verify .env settings
- Detect conflicts between projects
- Generate unique isolation IDs
- Update existing 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
Understanding Environment Files
Docker-local uses two separate .env files:
| File | Purpose | Location |
|---|---|---|
| Docker .env | Container configuration | ~/.config/docker-local/.env |
| Laravel .env | Application settings | ~/projects/<project>/.env |
Docker .env (Infrastructure)
Controls how containers are built:
PROJECTS_PATH=~/projects
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=secret
XDEBUG_ENABLED=true
Laravel .env (Application)
Controls how Laravel connects to services:
DB_HOST=mysql # Docker service name
DB_PORT=3306
REDIS_HOST=redis
MAIL_HOST=mailpit
Key insight: Services have different addresses:
- From host:
localhost:3306 - From container:
mysql:3306
Environment Commands
Check Current Project
# Verify .env configuration
docker-local env:check
# Checks:
# - Service hostnames (mysql vs localhost)
# - Required variables present
# - Redis DB numbers
# - Cache prefix
Audit All Projects
# Check ALL projects for conflicts
docker-local env:check --all
# Detects:
# - Duplicate database names
# - Overlapping Redis DBs
# - Duplicate cache prefixes
# - Shared MinIO buckets
Generate New .env
# Create new .env with unique IDs
docker-local make:env
# Generates:
# - Unique CACHE_PREFIX
# - Available REDIS_*_DB numbers
# - Unique REVERB credentials
# - Correct service hostnames
Update Existing .env
# Update .env with current settings
docker-local update:env
# Preserves:
# - Custom settings
# - API keys
# - User modifications
Isolation Settings
Database Isolation
Each project gets its own database:
DB_DATABASE=myapp # Main database
# Also created: myapp_testing
Redis Isolation
Each project uses 3 Redis databases:
REDIS_CACHE_DB=0
REDIS_SESSION_DB=1
REDIS_QUEUE_DB=2
Allocation pattern:
| Project # | Cache | Session | Queue |
|---|---|---|---|
| 1 | 0 | 1 | 2 |
| 2 | 3 | 4 | 5 |
| 3 | 6 | 7 | 8 |
| 4 | 9 | 10 | 11 |
| 5 | 12 | 13 | 14 |
Cache Prefix Isolation
CACHE_PREFIX=myapp_
Prevents cache key collisions between projects.
MinIO Bucket Isolation
AWS_BUCKET=myapp
Each project gets its own S3 bucket.
Reverb/WebSocket Isolation
REVERB_APP_ID=123456
REVERB_APP_KEY=random-key
REVERB_APP_SECRET=random-secret
Each project gets unique WebSocket credentials.
Conflict Detection
Example Conflict Report
ââ Environment Check: ~/projects/shop ââââââââââââââââââââââââââââââ
â Database Configuration
DB_HOST: mysql (correct)
DB_DATABASE: shop
â Redis Configuration
CACHE_DB: 6
SESSION_DB: 7
QUEUE_DB: 8
â CACHE_PREFIX Conflict
Current: laravel_cache_
Conflicts with: blog, api
Fix: Change to 'shop_' in .env:
CACHE_PREFIX=shop_
â MinIO Configuration
Bucket: shop
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Common Conflicts
Cache Prefix Conflict
â CACHE_PREFIX conflict with 'other-project'
Both use: laravel_cache_
Why: Cache data shared/corrupted between projects
Fix: CACHE_PREFIX=unique_project_name_
Redis DB Overlap
â REDIS_CACHE_DB conflict
Both projects use DB 0
Why: Cache data mixed between projects
Fix: Use next available set (3, 4, 5)
Database Name Collision
â DB_DATABASE conflict
Both projects use: laravel
Why: Data will be shared/overwritten
Fix: Use unique database name per project
Required .env Variables
Core Settings
APP_NAME=MyApp
APP_KEY=base64:...
APP_ENV=local
APP_DEBUG=true
APP_URL=https://myapp.test
Database (MySQL)
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=laravel
DB_PASSWORD=secret
Database (PostgreSQL)
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=myapp
DB_USERNAME=laravel
DB_PASSWORD=secret
Redis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_CACHE_DB=0
REDIS_SESSION_DB=1
REDIS_QUEUE_DB=2
Cache
CACHE_DRIVER=redis
CACHE_PREFIX=myapp_
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
S3/MinIO
FILESYSTEM_DISK=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
Fixing Common Issues
Wrong Database Host
# Wrong (from host perspective)
DB_HOST=localhost
# Correct (from container)
DB_HOST=mysql
Missing Unique IDs
# Generate everything
docker-local make:env
# Or manually:
CACHE_PREFIX=myapp_
REDIS_CACHE_DB=3
REDIS_SESSION_DB=4
REDIS_QUEUE_DB=5
Reset to Defaults
# Backup current .env
cp .env .env.backup
# Generate fresh .env
docker-local make:env
# Restore custom settings
# Manually copy API keys, etc. from backup
$ARGUMENTS
Repository

mwguerra
Author
mwguerra/claude-code-plugins/docker-local/skills/docker-local-env
3
Stars
0
Forks
Updated2d ago
Added6d ago