Contributing¶
Thank you for your interest in contributing to Azure Container Apps Practical Guide!
Quick Start¶
- Fork the repository
- Clone:
git clone https://github.com/yeongseon/azure-container-apps-practical-guide.git - Install dependencies:
pip install mkdocs-material mkdocs-minify-plugin - Start local preview:
mkdocs serve - Open
http://127.0.0.1:8000in your browser - Create a feature branch:
git checkout -b feature/your-change - Make changes and validate:
mkdocs build --strict - Submit a Pull Request
Repository Structure¶
.
├── .github/
│ └── workflows/ # GitHub Pages deployment
├── apps/
│ ├── python/ # Flask + Gunicorn implementation
│ ├── nodejs/ # Express.js implementation
│ ├── java-springboot/ # Spring Boot implementation
│ └── dotnet-aspnetcore/ # ASP.NET Core implementation
├── docs/
│ ├── assets/ # Images, icons
│ ├── best-practices/ # Production patterns and anti-patterns
│ ├── language-guides/ # Per-language step-by-step tutorials
│ ├── operations/ # Day-2 operational execution
│ ├── platform/ # Architecture and design decisions
│ ├── reference/ # CLI reference, environment variables, limits
│ ├── start-here/ # Overview, learning paths, repository map
│ └── troubleshooting/ # Playbooks, lab guides, KQL query packs
│ ├── playbooks/ # Detailed guides for specific failure scenarios
│ ├── lab-guides/ # Step-by-step instructions for reproducing issues
│ └── kql/ # KQL snippets for diagnostics
├── infra/ # Bicep/Terraform templates for provisioning
├── labs/ # Lab infrastructure + scripts for scenarios
└── mkdocs.yml # MkDocs Material configuration
Content Categories¶
| Section | Purpose |
|---|---|
| Start Here | Entry points, learning paths, repository map |
| Platform | Architecture, design decisions — WHAT and HOW it works |
| Best Practices | Production patterns — HOW to use the platform well |
| Language Guides | Per-language step-by-step tutorials and recipes |
| Operations | Day-2 execution — HOW to run in production |
| Troubleshooting | Diagnosis and resolution — hypothesis-driven |
| Reference | Quick lookup — CLI, environment variables, platform limits |
Document Templates¶
Every document must follow the template for its section. Do not invent new structures.
Platform docs¶
Best Practices docs¶
# Title
Brief introduction
## Why This Matters
## Recommended Practices
## Common Mistakes / Anti-Patterns
## Validation Checklist
## See Also
## Sources
Operations docs¶
# Title
Brief introduction
## Prerequisites
## When to Use
## Procedure
## Verification
## Rollback / Troubleshooting
## See Also
## Sources
Tutorial docs (Language Guides)¶
# Title
Brief introduction
## Prerequisites
## What You'll Build
## Steps
## Verification
## Next Steps / Clean Up (optional)
## See Also
## Sources (optional)
Troubleshooting docs¶
# Title
## Symptom
## Possible Causes
## Diagnosis Steps
## Resolution
## Prevention
## See Also
## Sources
Lab Guides¶
# Title
Brief introduction
## Lab Metadata (table: difficulty, duration, tier, etc.)
## 1) Background
## 2) Hypothesis
## 3) Runbook
## 4) Experiment Log
## Expected Evidence
## Clean Up
## Related Playbook
## See Also
## Sources
Reference docs¶
Writing Standards¶
CLI Commands¶
# ALWAYS use long flags for readability
az containerapp create --resource-group $RG --name $APP_NAME --environment $CONTAINER_ENV --image myregistry.azurecr.io/myapp:latest
# NEVER use short flags in documentation
az containerapp create -g $RG -n $APP_NAME # ❌ Don't do this
Variables¶
| Variable | Description | Example |
|---|---|---|
$RG | Resource group name | rg-containerapps-demo |
$APP_NAME | Container app name | ca-demo-app |
$CONTAINER_ENV | Container Apps environment | cae-demo-env |
$LOCATION | Azure region | koreacentral |
$SUBSCRIPTION_ID | Subscription identifier placeholder | <subscription-id> |
Mermaid Diagrams¶
All architectural diagrams use Mermaid. Every documentation page should include at least one diagram.
Nested Lists¶
All nested list items MUST use 4-space indent (Python-Markdown standard).
Admonitions¶
For MkDocs admonitions, indent body content by 4 spaces:
Tail Sections¶
Every document ends with these sections in order:
## See Also— internal cross-links within this repository## Sources— external references (Microsoft Learn URLs)
Content Source Policy¶
All content must be traceable to official Microsoft Learn documentation.
| Source Type | Description | Allowed? |
|---|---|---|
mslearn | Directly from Microsoft Learn | Required for platform content |
mslearn-adapted | Adapted from Microsoft Learn | Yes, with source URL |
self-generated | Original content | Requires justification |
PII Rules¶
NEVER include real Azure identifiers in documentation or examples:
- Subscription IDs: use
<subscription-id> - Tenant IDs: use
<tenant-id> - Emails: use
user@example.com - Secrets, tokens, connection strings: NEVER include
Build and Validate¶
# Install dependencies
pip install mkdocs-material mkdocs-minify-plugin
# Validate (must pass before submitting PR)
mkdocs build --strict
# Local preview
mkdocs serve
Git Commit Style¶
Allowed types: feat, fix, docs, chore, refactor
Review Process¶
- Automated CI checks (MkDocs build)
- Maintainer review for accuracy and completeness
- Merge to main triggers GitHub Pages deployment
Code of Conduct¶
Please read our Code of Conduct before contributing.