mcpField
L
ln-731-docker-generator

ln-731-docker-generator

github.com/levnikolaevichCloud & DevOps584379 installsUpdated 2d ago
Repository

About ln-731-docker-generator

A skill that generates Docker configuration for frontend, .NET, and Python projects. It uses templates and detected project versions to create container files, but does not build images or manage deployments.

Key features

  1. 01Generates Dockerfiles and docker-compose.yml
  2. 02Creates .dockerignore and Nginx configuration
  3. 03Supports frontend, .NET, and Python stacks
  4. 04Substitutes detected versions and project values
  5. 05Applies non-root, pinned-image, and health-check practices

Use cases

  1. 01Adding container configuration to a frontend project
  2. 02Preparing Docker files for a .NET or Python backend
  3. 03Generating local development and production container setup

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-731-docker-generator

After installing, type/ln-731-docker-generatorin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/templates/
docker_compose.template
dockerfile_backend_dotnet.template
dockerfile_backend_python.template
dockerfile_frontend.template
dockerignore.template
nginx.template

Details

From the project README

Paths: File paths (references/, ../ln-*) are relative to this skill directory.

ln-731-docker-generator

Type: L3 Worker Category: 7XX Project Bootstrap

Generates production-ready Docker configuration for containerized development.


Purpose & Scope

Creates Docker infrastructure for local development and production:

  • Does: Generate Dockerfiles, docker-compose, .dockerignore, nginx config
  • Does NOT: Build images, start containers, manage deployments

Inputs

InputSourceDescription
Stack Typeln-730 coordinatorfrontend, backend-dotnet, backend-python
VersionsAuto-detectedNode.js, .NET, Python versions
Project NameDirectory nameUsed for container naming
PortsDefaults or detectedFrontend: 3000, Backend: 5000/8000, DB: 5432

Outputs

FilePurposeTemplate
Dockerfile.frontendFrontend build & servedockerfile_frontend.template
Dockerfile.backendBackend build & rundockerfile_backend_dotnet.template or dockerfile_backend_python.template
docker-compose.ymlService orchestrationdocker_compose.template
.dockerignoreBuild context exclusionsdockerignore.template
nginx.confFrontend proxy confignginx.template

Workflow

Phase 1: Input Validation

Validate received configuration from coordinator:

  • Check stack type is supported (frontend, backend-dotnet, backend-python)
  • Verify versions are valid (Node 18+, .NET 8+, Python 3.10+)
  • Confirm project directory exists

Output: Validated configuration or error

Phase 2: Template Selection

Select appropriate templates based on stack:

StackTemplates Used
Frontend onlydockerfile_frontend, nginx, dockerignore
Backend .NETdockerfile_backend_dotnet, docker_compose, dockerignore
Backend Pythondockerfile_backend_python, docker_compose, dockerignore
Full stack .NETAll of the above (dotnet variant)
Full stack PythonAll of the above (python variant)
Phase 3: Variable Substitution

Replace template variables with detected values:

VariableSourceExample
{{NODE_VERSION}}package.json engines or default22
{{DOTNET_VERSION}}*.csproj TargetFramework9.0
{{PYTHON_VERSION}}pyproject.toml or default3.12
{{PROJECT_NAME}}Directory namemy-app
{{DLL_NAME}}*.csproj AssemblyNameMyApp.Api.dll
{{FRONTEND_PORT}}Default or detected3000
{{BACKEND_PORT}}Stack-dependent5000 (.NET), 8000 (Python)
{{BACKEND_HOST}}Service namebackend
{{CMD}}Framework-dependent["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] (FastAPI) or ["gunicorn", "--bind", "0.0.0.0:8000", "{{PROJECT_NAME}}.wsgi:application"] (Django)
Phase 4: File Generation

Generate files from templates:

  1. Check if file already exists (warn before overwrite)
  2. Apply variable substitution
  3. Write file to appropriate location
  4. Validate syntax where possible

File Locations:

  • Dockerfile.frontend -> src/frontend/Dockerfile
  • Dockerfile.backend -> project root
  • docker-compose.yml -> project root
  • .dockerignore -> project root
  • nginx.conf -> src/frontend/nginx.conf

Supported Stacks

Frontend: React/Vite + Nginx

Requirements:

  • package.json with build script
  • Vite or CRA configuration

Generated:

  • Multi-stage Dockerfile (builder + nginx)
  • Nginx config with SPA routing and API proxy
Backend: .NET 8/9

Requirements:

  • *.sln file in root
  • *.csproj with TargetFramework

Generated:

  • Multi-stage Dockerfile (SDK build + ASP.NET runtime)
  • Health check endpoint configuration
Backend: Python (FastAPI/Django)

Requirements:

  • requirements.txt or pyproject.toml

Generated:

  • Multi-stage Dockerfile (builder + slim runtime)
  • uvicorn (FastAPI) or gunicorn (Django) entrypoint

Security & Performance Best Practices

All generated files follow these guidelines:

PracticeImplementation
Non-root userCreate and use appuser (UID 1001)
Minimal imagesAlpine/slim variants
Multi-stage buildsExclude build tools from runtime
No secretsUse environment variables, not hardcoded
Health checksBuilt-in HEALTHCHECK instructions (wget/curl)
Specific versionsPin base image versions (e.g., nginx:1.27-alpine)
Non-interactive modeARG DEBIAN_FRONTEND=noninteractive
Layer cachingCopy dependency files first, source code last
BuildKit cacheUse --mount=type=cache for pip
Python optimizationPYTHONDONTWRITEBYTECODE=1, PYTHONUNBUFFERED=1

Quality Criteria

Generated files must meet:

  • docker-compose config validates without errors
  • All base images use specific versions (not latest)
  • Non-root user configured in all Dockerfiles
  • Health checks present for all services
  • .dockerignore excludes all sensitive files
  • No hardcoded secrets or passwords

Critical Notes

  1. Version Detection: Use detected versions from coordinator, not hardcoded defaults.
  2. Idempotent: Check file existence before writing. Warn if overwriting.
  3. Template-based: All generation uses templates from references/. Do NOT hardcode file contents.
  4. Security First: Every generated file must follow security best practices.

Reference Files

FilePurpose
dockerfile_frontend.templateReact/Vite multi-stage Dockerfile
dockerfile_backend_dotnet.template.NET multi-stage Dockerfile
dockerfile_backend_python.templatePython multi-stage Dockerfile
docker_compose.templatedocker-compose.yml template
dockerignore.template.dockerignore template
nginx.templateNginx configuration

Definition of Done

  • Dockerfiles generated for all detected stack components (frontend/backend)
  • docker-compose.yml validates without errors (docker-compose config)
  • .dockerignore excludes sensitive files and build artifacts
  • All base images use pinned versions (not latest)

Version: 1.2.0 Last Updated: 2026-01-21

Comments

Markdown supported