lc-docker-check
Verify docker-compose.yml, Dockerfile, and .env are properly synchronized.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Verify docker-compose.yml, Dockerfile, and .env are properly synchronized.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Create a Larascraper scraper (v2 or v3) for a target website, chaining browser actions (click, type, wait, scroll), conditional flow (when/repeatUntil), captcha solving, and file/PDF downloads. Detects the installed major and generates the matching style.
Add or edit a Laracrate file collection in config/laracrate.php with the correct anatomy (disk, access, types, variants, previews, extract/embed, flags, per-model scoping).
Runtime-verified Laravel inspection using the Laravel Boost MCP server (Tinker, Database Query/Schema, Last Error) instead of static grep. Falls back to Docker/Tinker if Boost is not installed.
Scaffold spatie/laravel-permission setup - add the HasRoles trait to a model and generate a roles & permissions seeder.
Audit spatie/laravel-permission usage - permissions used in code but undefined, defined but unused, unprotected routes, guard mismatches, and cache pitfalls.
Extract business logic from a controller or Livewire component method into a Laractions Action class.
| name | lc:docker-check |
| description | Verify docker-compose.yml, Dockerfile, and .env are properly synchronized. |
| argument-hint | [analyze | fix | fix --dry-run] |
| user-invocable | true |
| allowed-tools | Read Grep Bash Edit Write Glob |
Verify that docker-compose.yml, Dockerfile, .env, and composer.json are properly synchronized. Detects mismatched service names, port conflicts, missing extensions, and configuration drift.
| Subcommand | Description |
|---|---|
| (no argument) | Analyze Docker configuration and report issues. Read-only. |
fix | Fix detected mismatches by syncing .env with docker-compose values. Asks for confirmation before each change. |
fix --dry-run | Show what .env changes would be made without modifying anything. |
Use Read to load:
docker-compose.yml (or docker-compose.yaml, compose.yml, compose.yaml)Dockerfile (and any variant like docker/*/Dockerfile, docker/Dockerfile).env.env.examplecomposer.json (for PHP version and extension requirements)If any file is missing, note it and continue with available files.
mysql, db, database3306:3306MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD, MYSQL_ROOT_PASSWORD.env:
DB_HOST should match the service name (e.g., mysql, not 127.0.0.1)DB_PORT should match the internal port (usually 3306)DB_DATABASE should match MYSQL_DATABASEDB_USERNAME should match MYSQL_USERDB_PASSWORD should match MYSQL_PASSWORDCommon issue: DB_HOST=127.0.0.1 when it should be the Docker service name (e.g., mysql).
.env:
REDIS_HOST should match the service name (e.g., redis)REDIS_PORT should match the internal port (usually 6379).env:
MAIL_HOST should match the service nameMAIL_PORT should match the internal portCACHE_DRIVER and QUEUE_CONNECTION in .env.redis, verify Redis service exists in docker-compose.database, no extra service needed.host_port:container_port.3306 (MySQL) -- conflicts with local MySQL5432 (PostgreSQL) -- conflicts with local PostgreSQL6379 (Redis) -- conflicts with local Redis80/443 (HTTP/S) -- conflicts with local web server8080 (common dev port) -- conflicts with other dev serversvolumes: section.FROM php:X.Y-fpm, FROM php:X.Y-cli, etc.).composer.json for the require.php constraint (e.g., "^8.2").composer.json for require entries starting with ext-:
"ext-gd": "*" -> requires gd extension"ext-redis": "*" -> requires redis extension"ext-intl": "*" -> requires intl extensiondocker-php-ext-install gd intl pdo_mysqlpecl install redisRUN apt-get install (for underlying libraries).env with keys in .env.example..env but missing from .env.example (may cause setup issues for new developers)..env.example but missing from .env (may indicate unused configuration).DOCKER CONFIGURATION CHECK
============================
ISSUES FOUND
--------------
1. DB_HOST mismatch
.env: DB_HOST=127.0.0.1
docker-compose: Database service name is 'mysql'
Fix: Change DB_HOST to 'mysql' in .env
Severity: Critical (app cannot connect to DB in Docker)
2. Port conflict
Service 'mysql' maps to host port 3306
Service 'testing-db' also maps to host port 3306
Fix: Change one service to a different host port (e.g., 3307:3306)
Severity: Critical (docker-compose will fail to start)
3. Missing PHP extension
composer.json requires: ext-redis
Dockerfile: redis extension not found
Fix: Add 'pecl install redis && docker-php-ext-enable redis' to Dockerfile
Severity: High (application will fail at runtime)
4. PHP version mismatch
Dockerfile: PHP {detected_version}
composer.json: "php": "{composer_constraint}"
Status: Compatible/Incompatible
5. Missing .env.example keys
Keys in .env but not in .env.example:
- GOOGLE_OAUTH_CLIENT_ID
- GOOGLE_OAUTH_CLIENT_SECRET
- MICROSOFT_OAUTH_CLIENT_ID
Severity: Low (documentation issue)
ALL CHECKS
-----------
[PASS] Database service exists and is properly configured
[FAIL] DB_HOST does not match service name
[PASS] Redis service exists and matches REDIS_HOST
[PASS] No port conflicts detected
[PASS] Volume paths are valid
[PASS] PHP version is compatible
[FAIL] Missing ext-redis in Dockerfile
[WARN] 3 .env keys missing from .env.example
SUMMARY
========
Checks performed: 8
Passed: 5
Failed: 2
Warnings: 1
In fix mode, apply corrections with confirmation:
DB_HOST, REDIS_HOST, MAIL_HOST to match docker-compose service names.DB_DATABASE, DB_USERNAME, DB_PASSWORD to match docker-compose environment variables.Not auto-fixed (manual intervention needed):
docker/{version}/Dockerfile for different PHP versions). Check all..env files may have platform-specific line endings. Handle both \n and \r\n..env, preserve the existing file format and ordering.