Claude-skill-registry docker-local-database
Database operations with docker-local - create, connect, backup, restore for MySQL and PostgreSQL
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-database" ~/.claude/skills/majiayu000-claude-skill-registry-docker-local-database && rm -rf "$T"
manifest:
skills/data/docker-local-database/SKILL.mdsource content
Docker-Local Database Skill
Overview
This skill manages database operations in docker-local:
- Create databases
- Connect to database CLIs
- Backup and restore
- Run migrations
- Manage Redis
Available Database Services
| Service | Version | Port | Use Case |
|---|---|---|---|
| MySQL | 9.1 | 3306 | Traditional relational database |
| PostgreSQL | 17 | 5432 | Advanced features, pgvector for AI |
| Redis | 8 | 6379 | Cache, sessions, queues |
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
Database Commands
Connect to Database CLIs
# MySQL CLI docker-local db:mysql # PostgreSQL CLI docker-local db:postgres # Redis CLI docker-local db:redis
Create Database
# Create MySQL database docker-local db:create myapp # Creates: # - myapp (main database) # - myapp_testing (for tests)
Backup Database
# Dump current project database docker-local db:dump # Dump specific database docker-local db:dump myapp # Output goes to: myapp_YYYY-MM-DD_HH-MM-SS.sql
Manual backup commands:
# MySQL docker exec mysql mysqldump -u laravel -psecret myapp > backup.sql # PostgreSQL docker exec postgres pg_dump -U laravel myapp > backup.sql
Restore Database
# Restore from SQL file docker-local db:restore backup.sql # Restore to specific database docker-local db:restore backup.sql myapp
Manual restore commands:
# MySQL docker exec -i mysql mysql -u laravel -psecret myapp < backup.sql # PostgreSQL docker exec -i postgres psql -U laravel myapp < backup.sql
Run Migrations
# Fresh migration with seeds docker-local db:fresh # Regular migration docker-local tinker <<< "Artisan::call('migrate')" # Or via artisan docker exec -w /var/www/myapp php php artisan migrate
Default Credentials
MySQL
Host: mysql (inside Docker) / localhost (from host) Port: 3306 User: laravel (or root) Password: secret
PostgreSQL
Host: postgres (inside Docker) / localhost (from host) Port: 5432 User: laravel Password: secret
Redis
Host: redis (inside Docker) / localhost (from host) Port: 6379 Password: (none)
Connecting from Host Machine
For GUI tools like TablePlus, DBeaver, or DataGrip:
MySQL Connection
Host: localhost (or 127.0.0.1) Port: 3306 User: laravel (or root) Password: secret Database: myapp
PostgreSQL Connection
Host: localhost (or 127.0.0.1) Port: 5432 User: laravel Password: secret Database: myapp
Connecting from Inside Container
Laravel .env should use Docker service names:
# MySQL DB_HOST=mysql DB_PORT=3306 # PostgreSQL DB_HOST=postgres DB_PORT=5432 # Redis REDIS_HOST=redis REDIS_PORT=6379
Important: Use service names (mysql, postgres, redis), NOT localhost!
PostgreSQL with pgvector
PostgreSQL 17 includes pgvector for AI embeddings:
-- Extension is pre-installed -- Just use it in your tables: CREATE TABLE items ( id SERIAL PRIMARY KEY, embedding vector(1536) ); -- Similarity search SELECT * FROM items ORDER BY embedding <-> '[...]' LIMIT 10;
Redis Database Allocation
Redis has 16 databases (0-15). Docker-local allocates 3 per project:
| Project | Cache DB | Session DB | Queue DB |
|---|---|---|---|
| 1st project | 0 | 1 | 2 |
| 2nd project | 3 | 4 | 5 |
| 3rd project | 6 | 7 | 8 |
| 4th project | 9 | 10 | 11 |
| 5th project | 12 | 13 | 14 |
Check Redis usage:
# Connect to Redis docker-local db:redis # List all keys in current DB KEYS * # Switch databases SELECT 0 SELECT 3 # Count keys per database INFO keyspace
Database Troubleshooting
Cannot Connect to Database
# Check if container is running docker-local status # Check database logs docker-local logs mysql docker-local logs postgres # Test connection docker exec mysql mysqladmin ping -h localhost -u root -psecret docker exec postgres pg_isready -U laravel
Permission Denied
# MySQL - grant privileges docker exec mysql mysql -u root -psecret -e "GRANT ALL ON myapp.* TO 'laravel'@'%';" # PostgreSQL - check ownership docker exec postgres psql -U laravel -c "\l"
Database Not Found
# List existing databases # MySQL docker exec mysql mysql -u root -psecret -e "SHOW DATABASES;" # PostgreSQL docker exec postgres psql -U laravel -c "\l" # Create missing database docker-local db:create myapp
Reset Database
# Drop and recreate # MySQL docker exec mysql mysql -u root -psecret -e "DROP DATABASE myapp; CREATE DATABASE myapp;" # PostgreSQL docker exec postgres psql -U laravel -c "DROP DATABASE myapp; CREATE DATABASE myapp;" # Then migrate docker-local db:fresh
Useful SQL Commands
MySQL
-- Show databases SHOW DATABASES; -- Show tables USE myapp; SHOW TABLES; -- Show table structure DESCRIBE users; -- Export specific table docker exec mysql mysqldump -u laravel -psecret myapp users > users.sql
PostgreSQL
-- List databases \l -- Connect to database \c myapp -- List tables \dt -- Describe table \d users -- Show running queries SELECT * FROM pg_stat_activity;
Redis
# List all keys KEYS * # Get key type TYPE mykey # Get string value GET mykey # Get hash HGETALL myhash # Clear current database FLUSHDB # Clear all databases (careful!) FLUSHALL # Monitor commands in real-time MONITOR
$ARGUMENTS