Type: L3 Worker Category: 7XX Project Bootstrap Parent: ln-730-devops-setup
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
| Stack Type | ln-730 coordinator | frontend, backend-dotnet, backend-python
| Versions | Auto-detected | Node.js, .NET, Python versions
| Project Name | Directory name | Used for container naming
| Ports | Defaults or detected | Frontend: 3000, Backend: 5000/8000, DB: 5432
Outputs
| Dockerfile.frontend
| Frontend build & serve
| dockerfile_frontend.template
| Dockerfile.backend
| Backend build & run
| dockerfile_backend_dotnet.template or dockerfile_backend_python.template
| docker-compose.yml
| Service orchestration
| docker_compose.template
| .dockerignore
| Build context exclusions
| dockerignore.template
| nginx.conf
| Frontend proxy config
| nginx.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:
| Frontend only | dockerfile_frontend, nginx, dockerignore
| Backend .NET | dockerfile_backend_dotnet, docker_compose, dockerignore
| Backend Python | dockerfile_backend_python, docker_compose, dockerignore
| Full stack .NET | All of the above (dotnet variant)
| Full stack Python | All of the above (python variant)
Phase 3: Variable Substitution
Replace template variables with detected values:
| {{NODE_VERSION}}
| package.json engines or default
| 22
| {{DOTNET_VERSION}}
| *.csproj TargetFramework
| 9.0
| {{PYTHON_VERSION}}
| pyproject.toml or default
| 3.12
| {{PROJECT_NAME}}
| Directory name
| my-app
| {{DLL_NAME}}
| *.csproj AssemblyName
| MyApp.Api.dll
| {{FRONTEND_PORT}}
| Default or detected
| 3000
| {{BACKEND_PORT}}
| Stack-dependent
| 5000 (.NET), 8000 (Python)
| {{BACKEND_HOST}}
| Service name
| backend
| {{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:
-
Check if file already exists (warn before overwrite)
-
Apply variable substitution
-
Write file to appropriate location
-
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:
| Non-root user | Create and use appuser (UID 1001)
| Minimal images | Alpine/slim variants
| Multi-stage builds | Exclude build tools from runtime
| No secrets | Use environment variables, not hardcoded
| Health checks | Built-in HEALTHCHECK instructions (wget/curl)
| Specific versions | Pin base image versions (e.g., nginx:1.27-alpine)
| Non-interactive mode | ARG DEBIAN_FRONTEND=noninteractive
| Layer caching | Copy dependency files first, source code last
| BuildKit cache
| Use --mount=type=cache for pip
| Python optimization | PYTHONDONTWRITEBYTECODE=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
-
Version Detection: Use detected versions from coordinator, not hardcoded defaults.
-
Idempotent: Check file existence before writing. Warn if overwriting.
-
Template-based: All generation uses templates from references/. Do NOT hardcode file contents.
-
Security First: Every generated file must follow security best practices.
Reference Files
| dockerfile_frontend.template | React/Vite multi-stage Dockerfile
| dockerfile_backend_dotnet.template | .NET multi-stage Dockerfile
| dockerfile_backend_python.template | Python multi-stage Dockerfile
| docker_compose.template | docker-compose.yml template
| dockerignore.template | .dockerignore template
| nginx.template | Nginx configuration
Version: 1.2.0 Last Updated: 2026-01-21