container-superposition 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +843 -0
  2. package/dist/scripts/init.d.ts +3 -0
  3. package/dist/scripts/init.d.ts.map +1 -0
  4. package/dist/scripts/init.js +1190 -0
  5. package/dist/scripts/init.js.map +1 -0
  6. package/dist/scripts/migrate-to-manifests.d.ts +12 -0
  7. package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
  8. package/dist/scripts/migrate-to-manifests.js +230 -0
  9. package/dist/scripts/migrate-to-manifests.js.map +1 -0
  10. package/dist/tool/questionnaire/composer.d.ts +6 -0
  11. package/dist/tool/questionnaire/composer.d.ts.map +1 -0
  12. package/dist/tool/questionnaire/composer.js +1232 -0
  13. package/dist/tool/questionnaire/composer.js.map +1 -0
  14. package/dist/tool/readme/markdown-parser.d.ts +30 -0
  15. package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
  16. package/dist/tool/readme/markdown-parser.js +139 -0
  17. package/dist/tool/readme/markdown-parser.js.map +1 -0
  18. package/dist/tool/readme/readme-generator.d.ts +9 -0
  19. package/dist/tool/readme/readme-generator.d.ts.map +1 -0
  20. package/dist/tool/readme/readme-generator.js +422 -0
  21. package/dist/tool/readme/readme-generator.js.map +1 -0
  22. package/dist/tool/schema/custom-loader.d.ts +17 -0
  23. package/dist/tool/schema/custom-loader.d.ts.map +1 -0
  24. package/dist/tool/schema/custom-loader.js +149 -0
  25. package/dist/tool/schema/custom-loader.js.map +1 -0
  26. package/dist/tool/schema/overlay-loader.d.ts +47 -0
  27. package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
  28. package/dist/tool/schema/overlay-loader.js +252 -0
  29. package/dist/tool/schema/overlay-loader.js.map +1 -0
  30. package/dist/tool/schema/types.d.ts +212 -0
  31. package/dist/tool/schema/types.d.ts.map +1 -0
  32. package/dist/tool/schema/types.js +5 -0
  33. package/dist/tool/schema/types.js.map +1 -0
  34. package/docs/README.md +308 -0
  35. package/docs/architecture.md +233 -0
  36. package/docs/creating-overlays.md +549 -0
  37. package/docs/custom-patches.md +540 -0
  38. package/docs/dependencies.md +279 -0
  39. package/docs/examples/custom-patches-example.md +85 -0
  40. package/docs/examples.md +576 -0
  41. package/docs/messaging-comparison.md +265 -0
  42. package/docs/messaging-quick-start.md +385 -0
  43. package/docs/observability-workflow.md +537 -0
  44. package/docs/overlay-manifest-refactoring.md +214 -0
  45. package/docs/overlay-metadata-archive.md +54 -0
  46. package/docs/overlays.md +523 -0
  47. package/docs/presets-architecture.md +498 -0
  48. package/docs/presets.md +366 -0
  49. package/docs/publishing.md +476 -0
  50. package/docs/quick-reference.md +326 -0
  51. package/docs/ux.md +170 -0
  52. package/features/README.md +85 -0
  53. package/features/cross-distro-packages/README.md +146 -0
  54. package/features/cross-distro-packages/devcontainer-feature.json +20 -0
  55. package/features/cross-distro-packages/install.sh +58 -0
  56. package/features/local-secrets-manager/devcontainer-feature.json +18 -0
  57. package/features/local-secrets-manager/install.sh +127 -0
  58. package/features/project-scaffolder/devcontainer-feature.json +24 -0
  59. package/features/project-scaffolder/install.sh +100 -0
  60. package/features/team-conventions/devcontainer-feature.json +24 -0
  61. package/features/team-conventions/install.sh +93 -0
  62. package/overlays/.registry/README.md +14 -0
  63. package/overlays/.registry/base-images.yml +26 -0
  64. package/overlays/.registry/base-templates.yml +7 -0
  65. package/overlays/README.md +155 -0
  66. package/overlays/alertmanager/.env.example +5 -0
  67. package/overlays/alertmanager/README.md +465 -0
  68. package/overlays/alertmanager/alert-rules.yml +56 -0
  69. package/overlays/alertmanager/alertmanager.yml +42 -0
  70. package/overlays/alertmanager/devcontainer.patch.json +12 -0
  71. package/overlays/alertmanager/docker-compose.yml +20 -0
  72. package/overlays/alertmanager/overlay.yml +17 -0
  73. package/overlays/alertmanager/setup.sh +53 -0
  74. package/overlays/alertmanager/verify.sh +31 -0
  75. package/overlays/aws-cli/README.md +473 -0
  76. package/overlays/aws-cli/devcontainer.patch.json +13 -0
  77. package/overlays/aws-cli/overlay.yml +13 -0
  78. package/overlays/azure-cli/README.md +551 -0
  79. package/overlays/azure-cli/devcontainer.patch.json +8 -0
  80. package/overlays/azure-cli/overlay.yml +13 -0
  81. package/overlays/bun/README.md +312 -0
  82. package/overlays/bun/devcontainer.patch.json +41 -0
  83. package/overlays/bun/overlay.yml +16 -0
  84. package/overlays/bun/setup.sh +79 -0
  85. package/overlays/bun/verify.sh +30 -0
  86. package/overlays/codex/README.md +128 -0
  87. package/overlays/codex/devcontainer.patch.json +3 -0
  88. package/overlays/codex/overlay.yml +14 -0
  89. package/overlays/codex/setup.sh +24 -0
  90. package/overlays/codex/verify.sh +30 -0
  91. package/overlays/commitlint/README.md +333 -0
  92. package/overlays/commitlint/devcontainer.patch.json +8 -0
  93. package/overlays/commitlint/overlay.yml +16 -0
  94. package/overlays/commitlint/setup.sh +234 -0
  95. package/overlays/direnv/README.md +504 -0
  96. package/overlays/direnv/devcontainer.patch.json +6 -0
  97. package/overlays/direnv/overlay.yml +13 -0
  98. package/overlays/direnv/setup.sh +139 -0
  99. package/overlays/docker-in-docker/README.md +534 -0
  100. package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
  101. package/overlays/docker-in-docker/overlay.yml +13 -0
  102. package/overlays/docker-sock/README.md +256 -0
  103. package/overlays/docker-sock/devcontainer.patch.json +9 -0
  104. package/overlays/docker-sock/docker-compose.yml +8 -0
  105. package/overlays/docker-sock/overlay.yml +13 -0
  106. package/overlays/dotnet/README.md +147 -0
  107. package/overlays/dotnet/devcontainer.patch.json +51 -0
  108. package/overlays/dotnet/global-tools.txt +24 -0
  109. package/overlays/dotnet/overlay.yml +13 -0
  110. package/overlays/dotnet/setup.sh +51 -0
  111. package/overlays/dotnet/verify.sh +26 -0
  112. package/overlays/gcloud/README.md +269 -0
  113. package/overlays/gcloud/devcontainer.patch.json +14 -0
  114. package/overlays/gcloud/overlay.yml +14 -0
  115. package/overlays/gcloud/verify.sh +52 -0
  116. package/overlays/git-helpers/README.md +168 -0
  117. package/overlays/git-helpers/devcontainer.patch.json +33 -0
  118. package/overlays/git-helpers/overlay.yml +15 -0
  119. package/overlays/git-helpers/setup.sh +91 -0
  120. package/overlays/go/README.md +293 -0
  121. package/overlays/go/devcontainer.patch.json +43 -0
  122. package/overlays/go/overlay.yml +15 -0
  123. package/overlays/go/setup.sh +33 -0
  124. package/overlays/go/verify.sh +40 -0
  125. package/overlays/grafana/.env.example +9 -0
  126. package/overlays/grafana/README.md +462 -0
  127. package/overlays/grafana/dashboard-provider.yml +11 -0
  128. package/overlays/grafana/dashboards/observability-overview.json +263 -0
  129. package/overlays/grafana/devcontainer.patch.json +12 -0
  130. package/overlays/grafana/docker-compose.yml +27 -0
  131. package/overlays/grafana/grafana-datasources.yml +57 -0
  132. package/overlays/grafana/overlay.yml +21 -0
  133. package/overlays/grafana/verify.sh +34 -0
  134. package/overlays/jaeger/.env.example +7 -0
  135. package/overlays/jaeger/README.md +867 -0
  136. package/overlays/jaeger/devcontainer.patch.json +12 -0
  137. package/overlays/jaeger/docker-compose.yml +17 -0
  138. package/overlays/jaeger/overlay.yml +19 -0
  139. package/overlays/java/README.md +267 -0
  140. package/overlays/java/devcontainer.patch.json +44 -0
  141. package/overlays/java/overlay.yml +16 -0
  142. package/overlays/java/setup.sh +41 -0
  143. package/overlays/java/verify.sh +42 -0
  144. package/overlays/just/README.md +443 -0
  145. package/overlays/just/devcontainer.patch.json +3 -0
  146. package/overlays/just/overlay.yml +13 -0
  147. package/overlays/just/setup.sh +182 -0
  148. package/overlays/kubectl-helm/README.md +660 -0
  149. package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
  150. package/overlays/kubectl-helm/overlay.yml +13 -0
  151. package/overlays/loki/.env.example +5 -0
  152. package/overlays/loki/README.md +1156 -0
  153. package/overlays/loki/devcontainer.patch.json +12 -0
  154. package/overlays/loki/docker-compose.yml +18 -0
  155. package/overlays/loki/loki-config.yaml +45 -0
  156. package/overlays/loki/overlay.yml +17 -0
  157. package/overlays/minio/.env.example +9 -0
  158. package/overlays/minio/README.md +639 -0
  159. package/overlays/minio/devcontainer.patch.json +30 -0
  160. package/overlays/minio/docker-compose.yml +28 -0
  161. package/overlays/minio/overlay.yml +18 -0
  162. package/overlays/minio/setup.sh +61 -0
  163. package/overlays/minio/verify.sh +64 -0
  164. package/overlays/mkdocs/README.md +309 -0
  165. package/overlays/mkdocs/devcontainer.patch.json +24 -0
  166. package/overlays/mkdocs/overlay.yml +15 -0
  167. package/overlays/modern-cli-tools/README.md +556 -0
  168. package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
  169. package/overlays/modern-cli-tools/overlay.yml +13 -0
  170. package/overlays/modern-cli-tools/setup.sh +153 -0
  171. package/overlays/mongodb/.env.example +9 -0
  172. package/overlays/mongodb/README.md +481 -0
  173. package/overlays/mongodb/devcontainer.patch.json +32 -0
  174. package/overlays/mongodb/docker-compose.yml +44 -0
  175. package/overlays/mongodb/overlay.yml +17 -0
  176. package/overlays/mongodb/verify.sh +48 -0
  177. package/overlays/mysql/.env.example +11 -0
  178. package/overlays/mysql/README.md +542 -0
  179. package/overlays/mysql/devcontainer.patch.json +34 -0
  180. package/overlays/mysql/docker-compose.yml +55 -0
  181. package/overlays/mysql/overlay.yml +16 -0
  182. package/overlays/mysql/verify.sh +48 -0
  183. package/overlays/nats/.env.example +5 -0
  184. package/overlays/nats/README.md +762 -0
  185. package/overlays/nats/devcontainer.patch.json +24 -0
  186. package/overlays/nats/docker-compose.yml +31 -0
  187. package/overlays/nats/overlay.yml +18 -0
  188. package/overlays/nats/verify.sh +50 -0
  189. package/overlays/ngrok/README.md +503 -0
  190. package/overlays/ngrok/devcontainer.patch.json +3 -0
  191. package/overlays/ngrok/overlay.yml +14 -0
  192. package/overlays/ngrok/setup.sh +125 -0
  193. package/overlays/nodejs/README.md +192 -0
  194. package/overlays/nodejs/devcontainer.patch.json +49 -0
  195. package/overlays/nodejs/global-packages.txt +16 -0
  196. package/overlays/nodejs/overlay.yml +14 -0
  197. package/overlays/nodejs/setup.sh +46 -0
  198. package/overlays/nodejs/verify.sh +32 -0
  199. package/overlays/otel-collector/.env.example +9 -0
  200. package/overlays/otel-collector/README.md +1257 -0
  201. package/overlays/otel-collector/devcontainer.patch.json +28 -0
  202. package/overlays/otel-collector/docker-compose.yml +22 -0
  203. package/overlays/otel-collector/otel-collector-config.yaml +68 -0
  204. package/overlays/otel-collector/overlay.yml +21 -0
  205. package/overlays/otel-collector/setup.sh +49 -0
  206. package/overlays/otel-demo-nodejs/.env.example +2 -0
  207. package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
  208. package/overlays/otel-demo-nodejs/README.md +409 -0
  209. package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
  210. package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
  211. package/overlays/otel-demo-nodejs/overlay.yml +23 -0
  212. package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
  213. package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
  214. package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
  215. package/overlays/otel-demo-nodejs/verify.sh +31 -0
  216. package/overlays/otel-demo-python/.env.example +2 -0
  217. package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
  218. package/overlays/otel-demo-python/README.md +82 -0
  219. package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
  220. package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
  221. package/overlays/otel-demo-python/docker-compose.yml +19 -0
  222. package/overlays/otel-demo-python/overlay.yml +23 -0
  223. package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
  224. package/overlays/otel-demo-python/verify.sh +31 -0
  225. package/overlays/playwright/README.md +629 -0
  226. package/overlays/playwright/devcontainer.patch.json +9 -0
  227. package/overlays/playwright/overlay.yml +13 -0
  228. package/overlays/postgres/.env.example +6 -0
  229. package/overlays/postgres/README.md +602 -0
  230. package/overlays/postgres/devcontainer.patch.json +21 -0
  231. package/overlays/postgres/docker-compose.yml +22 -0
  232. package/overlays/postgres/overlay.yml +15 -0
  233. package/overlays/postgres/verify.sh +45 -0
  234. package/overlays/powershell/README.md +314 -0
  235. package/overlays/powershell/devcontainer.patch.json +22 -0
  236. package/overlays/powershell/overlay.yml +13 -0
  237. package/overlays/powershell/setup.sh +29 -0
  238. package/overlays/powershell/verify.sh +38 -0
  239. package/overlays/pre-commit/README.md +263 -0
  240. package/overlays/pre-commit/devcontainer.patch.json +9 -0
  241. package/overlays/pre-commit/overlay.yml +16 -0
  242. package/overlays/pre-commit/setup.sh +129 -0
  243. package/overlays/presets/docs-site.yml +118 -0
  244. package/overlays/presets/fullstack.yml +181 -0
  245. package/overlays/presets/microservice.yml +118 -0
  246. package/overlays/presets/web-api.yml +109 -0
  247. package/overlays/prometheus/.env.example +5 -0
  248. package/overlays/prometheus/README.md +1246 -0
  249. package/overlays/prometheus/devcontainer.patch.json +12 -0
  250. package/overlays/prometheus/docker-compose.yml +22 -0
  251. package/overlays/prometheus/overlay.yml +17 -0
  252. package/overlays/prometheus/prometheus.yml +12 -0
  253. package/overlays/prometheus/verify.sh +34 -0
  254. package/overlays/promtail/.env.example +2 -0
  255. package/overlays/promtail/README.md +357 -0
  256. package/overlays/promtail/devcontainer.patch.json +5 -0
  257. package/overlays/promtail/docker-compose.yml +16 -0
  258. package/overlays/promtail/overlay.yml +17 -0
  259. package/overlays/promtail/promtail-config.yaml +60 -0
  260. package/overlays/promtail/verify.sh +31 -0
  261. package/overlays/pulumi/README.md +472 -0
  262. package/overlays/pulumi/devcontainer.patch.json +13 -0
  263. package/overlays/pulumi/overlay.yml +14 -0
  264. package/overlays/pulumi/verify.sh +31 -0
  265. package/overlays/python/README.md +919 -0
  266. package/overlays/python/devcontainer.patch.json +41 -0
  267. package/overlays/python/overlay.yml +12 -0
  268. package/overlays/python/requirements-overlay.txt +13 -0
  269. package/overlays/python/setup.sh +47 -0
  270. package/overlays/python/verify.sh +32 -0
  271. package/overlays/rabbitmq/.env.example +7 -0
  272. package/overlays/rabbitmq/README.md +680 -0
  273. package/overlays/rabbitmq/devcontainer.patch.json +28 -0
  274. package/overlays/rabbitmq/docker-compose.yml +30 -0
  275. package/overlays/rabbitmq/overlay.yml +18 -0
  276. package/overlays/rabbitmq/verify.sh +41 -0
  277. package/overlays/redis/.env.example +4 -0
  278. package/overlays/redis/README.md +776 -0
  279. package/overlays/redis/devcontainer.patch.json +21 -0
  280. package/overlays/redis/docker-compose.yml +21 -0
  281. package/overlays/redis/overlay.yml +15 -0
  282. package/overlays/redis/verify.sh +41 -0
  283. package/overlays/redpanda/.env.example +10 -0
  284. package/overlays/redpanda/README.md +703 -0
  285. package/overlays/redpanda/devcontainer.patch.json +37 -0
  286. package/overlays/redpanda/docker-compose.yml +67 -0
  287. package/overlays/redpanda/overlay.yml +21 -0
  288. package/overlays/redpanda/verify.sh +48 -0
  289. package/overlays/rust/README.md +299 -0
  290. package/overlays/rust/devcontainer.patch.json +39 -0
  291. package/overlays/rust/overlay.yml +15 -0
  292. package/overlays/rust/setup.sh +36 -0
  293. package/overlays/rust/verify.sh +51 -0
  294. package/overlays/sqlite/README.md +584 -0
  295. package/overlays/sqlite/devcontainer.patch.json +14 -0
  296. package/overlays/sqlite/overlay.yml +15 -0
  297. package/overlays/sqlite/setup.sh +27 -0
  298. package/overlays/sqlite/verify.sh +43 -0
  299. package/overlays/sqlserver/.env.example +6 -0
  300. package/overlays/sqlserver/README.md +592 -0
  301. package/overlays/sqlserver/devcontainer.patch.json +22 -0
  302. package/overlays/sqlserver/docker-compose.yml +32 -0
  303. package/overlays/sqlserver/overlay.yml +17 -0
  304. package/overlays/sqlserver/verify.sh +30 -0
  305. package/overlays/tempo/.env.example +5 -0
  306. package/overlays/tempo/README.md +273 -0
  307. package/overlays/tempo/devcontainer.patch.json +12 -0
  308. package/overlays/tempo/docker-compose.yml +20 -0
  309. package/overlays/tempo/overlay.yml +20 -0
  310. package/overlays/tempo/tempo-config.yaml +32 -0
  311. package/overlays/tempo/verify.sh +31 -0
  312. package/overlays/terraform/README.md +389 -0
  313. package/overlays/terraform/devcontainer.patch.json +15 -0
  314. package/overlays/terraform/overlay.yml +14 -0
  315. package/overlays/terraform/verify.sh +63 -0
  316. package/package.json +74 -0
  317. package/templates/README.md +285 -0
  318. package/templates/compose/.devcontainer/devcontainer.json +46 -0
  319. package/templates/compose/.devcontainer/docker-compose.yml +12 -0
  320. package/templates/compose/README.md +20 -0
  321. package/templates/plain/.devcontainer/devcontainer.json +35 -0
  322. package/templates/plain/README.md +21 -0
  323. package/tool/README.md +281 -0
  324. package/tool/schema/base-images.schema.json +43 -0
  325. package/tool/schema/base-templates.schema.json +34 -0
  326. package/tool/schema/config.schema.json +71 -0
  327. package/tool/schema/overlay-manifest.schema.json +86 -0
@@ -0,0 +1,285 @@
1
+ # Templates
2
+
3
+ Minimal base templates for devcontainer configurations. These are designed to be **composed with overlays** to create your ideal development environment.
4
+
5
+ ## Philosophy
6
+
7
+ These templates provide a **clean foundation** that:
8
+
9
+ - ✅ Start minimal - add only what you need via overlays
10
+ - ✅ Use official images and features from [containers.dev](https://containers.dev)
11
+ - ✅ Support both simple (image-based) and complex (docker-compose) scenarios
12
+ - ✅ Enable composability through overlay system
13
+ - ✅ Optimize for fast builds with proper caching
14
+
15
+ We **DO NOT** duplicate what's already available. We **COMPOSE** existing tools into complete solutions.
16
+
17
+ ## Available Templates
18
+
19
+ ### 🟢 plain
20
+
21
+ **Minimal image-based devcontainer**
22
+
23
+ Ideal for: Simple projects that don't need additional services
24
+
25
+ Includes:
26
+
27
+ - Debian base image
28
+ - Common utilities (git, zsh, curl, wget, vim)
29
+ - Basic shell enhancements
30
+ - Minimal footprint
31
+
32
+ **Use when:** Building single-service applications without external dependencies
33
+
34
+ **Compose with:**
35
+
36
+ - Language overlays (dotnet, nodejs, python, mkdocs)
37
+ - Development tools (playwright, aws-cli, azure-cli)
38
+
39
+ ---
40
+
41
+ ### 🔵 compose
42
+
43
+ **Docker Compose-based devcontainer**
44
+
45
+ Ideal for: Multi-service applications requiring databases, observability, etc.
46
+
47
+ Includes:
48
+
49
+ - Docker Compose infrastructure
50
+ - Devcontainer service on shared network
51
+ - Docker-outside-of-Docker support
52
+ - Ready for service composition
53
+
54
+ **Use when:** Building applications that need databases, caching, observability stack, or multiple services
55
+
56
+ **Compose with:**
57
+
58
+ - Language overlays (dotnet, nodejs, python, mkdocs)
59
+ - Databases (postgres, redis)
60
+ - Observability (otel-collector, jaeger, prometheus, grafana, loki)
61
+ - Cloud tools (aws-cli, azure-cli, kubectl-helm)
62
+
63
+ ---
64
+
65
+ ## Composing with Overlays
66
+
67
+ Templates are designed to work with the overlay system. Common combinations:
68
+
69
+ ### Web API with Database
70
+
71
+ ```bash
72
+ # compose + nodejs + postgres + redis
73
+ ```
74
+
75
+ ### Microservice with Observability
76
+
77
+ ```bash
78
+ # compose + dotnet + postgres + otel-collector + jaeger + prometheus + grafana
79
+ ```
80
+
81
+ ### Documentation Site
82
+
83
+ ```bash
84
+ # plain + mkdocs
85
+ ```
86
+
87
+ ### Fullstack Application
88
+
89
+ ```bash
90
+ # compose + nodejs + python + postgres + redis + otel-collector + jaeger + grafana + loki
91
+ ```
92
+
93
+ ## Quick Start
94
+
95
+ ### Using the Init Tool (Recommended)
96
+
97
+ ```bash
98
+ cd /path/to/your/project
99
+ npx @veggerby/container-superposition init
100
+ ```
101
+
102
+ The tool will guide you through:
103
+
104
+ 1. Selecting a base template (plain or compose)
105
+ 2. Choosing language/framework
106
+ 3. Adding databases
107
+ 4. Adding observability tools
108
+ 5. Adding cloud/dev tools
109
+
110
+ ### Manual Setup
111
+
112
+ 1. Copy a template:
113
+
114
+ ```bash
115
+ cp -r templates/compose/.devcontainer /path/to/my-project/
116
+ ```
117
+
118
+ 2. Add overlay configurations manually
119
+ 3. Merge docker-compose files
120
+ 4. Update devcontainer.json
121
+
122
+ The `postCreateCommand` script will:
123
+
124
+ - Install global tools
125
+ - Install project dependencies (if package.json exists)
126
+ - Configure the environment
127
+ - Display helpful next steps
128
+
129
+ ### 6. Start Developing!
130
+
131
+ Your environment is ready. Start coding!
132
+
133
+ ## Customization
134
+
135
+ ### Add More Features
136
+
137
+ Browse [containers.dev/features](https://containers.dev/features) and add to `devcontainer.json`:
138
+
139
+ ```json
140
+ {
141
+ "features": {
142
+ "ghcr.io/devcontainers/features/aws-cli:1": {},
143
+ "ghcr.io/devcontainers/features/kubectl-helm-minikube:1": {}
144
+ }
145
+ }
146
+ ```
147
+
148
+ ### Add VS Code Extensions
149
+
150
+ ```json
151
+ {
152
+ "customizations": {
153
+ "vscode": {
154
+ "extensions": ["your.extension.id"]
155
+ }
156
+ }
157
+ }
158
+ ```
159
+
160
+ ### Change Base Image
161
+
162
+ Replace the `image` in `devcontainer.json` with any image from:
163
+
164
+ - [containers.dev/images](https://containers.dev/images)
165
+ - [Docker Hub](https://hub.docker.com)
166
+ - Your custom image
167
+
168
+ ### Modify Post-Create Script
169
+
170
+ Edit `.devcontainer/post-create.sh` to:
171
+
172
+ - Install additional global tools
173
+ - Run custom initialization
174
+ - Configure git
175
+ - Set environment variables
176
+
177
+ ## Mixing Templates
178
+
179
+ You can combine elements from different templates:
180
+
181
+ 1. **Start with one template** as the base
182
+ 2. **Copy useful scripts** from other templates
183
+ 3. **Add features** from containers.dev
184
+ 4. **Include custom features** from `/features`
185
+
186
+ Example: Start with `node-typescript`, add PostgreSQL from `full-stack-postgres`.
187
+
188
+ ## Template Comparison
189
+
190
+ | Template | Language | Purpose | Complexity | Best For |
191
+ | --------------- | ------------- | --------------- | ---------- | ------------------------------ |
192
+ | node-typescript | JavaScript/TS | Web Development | Simple | APIs, SPAs, Full-stack apps |
193
+ | dotnet-webapi | C# | Backend APIs | Simple | Enterprise APIs, Microservices |
194
+ | python-mkdocs | Python | Documentation | Simple | Tech docs, Wikis, Guides |
195
+
196
+ ## Requirements
197
+
198
+ ### System Requirements
199
+
200
+ - **VS Code** with [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
201
+ - **Docker Desktop** or Docker Engine
202
+ - **Git** (for cloning and version control)
203
+
204
+ ### Recommended
205
+
206
+ - 8GB+ RAM (16GB for complex templates)
207
+ - SSD for faster container builds
208
+ - Good internet connection (first build downloads images)
209
+
210
+ ## Performance Tips
211
+
212
+ ### Fast Builds
213
+
214
+ - Templates use official images (cached by Docker)
215
+ - Layer caching optimizes rebuilds
216
+ - Volume mounts persist data across rebuilds
217
+
218
+ ### Resource Usage
219
+
220
+ - Adjust Docker Desktop memory/CPU limits
221
+ - Use `.dockerignore` to exclude unnecessary files
222
+ - Clean up unused containers: `docker system prune`
223
+
224
+ ### Development Speed
225
+
226
+ - Keep the container running (don't rebuild unnecessarily)
227
+ - Use hot reload (all templates support it)
228
+ - Leverage Nx cache for monorepos
229
+
230
+ ## Troubleshooting
231
+
232
+ ### Build Fails
233
+
234
+ - Check Docker Desktop is running
235
+ - Ensure you have internet connection
236
+ - Try: `Rebuild Container` from command palette
237
+
238
+ ### Extensions Not Loading
239
+
240
+ - Rebuild container: `Cmd/Ctrl + Shift + P` → "Rebuild Container"
241
+ - Check extensions are supported in containers
242
+
243
+ ### Slow Performance
244
+
245
+ - Increase Docker Desktop resources
246
+ - Use `.dockerignore` to reduce context size
247
+ - Check antivirus isn't scanning Docker files
248
+
249
+ ### Port Already in Use
250
+
251
+ - Change `forwardPorts` in `devcontainer.json`
252
+ - Stop other services using the port
253
+ - Use different ports for multiple projects
254
+
255
+ ## Contributing
256
+
257
+ Have improvements or new templates?
258
+
259
+ **Good template additions:**
260
+
261
+ - Solve a specific, common use case
262
+ - Use official images and features
263
+ - Include comprehensive documentation
264
+ - Are well-tested and production-ready
265
+ - Follow existing template structure
266
+
267
+ **Template structure:**
268
+
269
+ ```
270
+ templates/your-template/
271
+ ├── .devcontainer/
272
+ │ ├── devcontainer.json # Main configuration
273
+ │ ├── post-create.sh # Setup script
274
+ │ ├── Dockerfile # (if needed)
275
+ │ └── docker-compose.yml # (if multi-container)
276
+ └── README.md # Usage documentation
277
+ ```
278
+
279
+ ## Additional Resources
280
+
281
+ - [Dev Containers Documentation](https://code.visualstudio.com/docs/devcontainers/containers)
282
+ - [Dev Container Specification](https://containers.dev/)
283
+ - [Official Features](https://containers.dev/features)
284
+ - [Official Images](https://containers.dev/images)
285
+ - [VS Code Extension Guide](https://code.visualstudio.com/api/advanced-topics/remote-extensions)
@@ -0,0 +1,46 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.schema.json",
3
+ "name": "Compose-Based Development",
4
+ "dockerComposeFile": ["docker-compose.yml"],
5
+ "service": "devcontainer",
6
+ "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
7
+ "runServices": [],
8
+ "features": {
9
+ "ghcr.io/devcontainers/features/common-utils:2": {
10
+ "installZsh": true,
11
+ "installOhMyZsh": true,
12
+ "upgradePackages": true,
13
+ "username": "vscode",
14
+ "userUid": "automatic",
15
+ "userGid": "automatic"
16
+ },
17
+ "ghcr.io/devcontainers/features/git:1": {
18
+ "version": "os-provided"
19
+ },
20
+ "./features/cross-distro-packages": {
21
+ "apt": "bash-completion curl wget vim less",
22
+ "apk": "bash-completion curl wget vim less"
23
+ },
24
+ "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {
25
+ "moby": false
26
+ }
27
+ },
28
+ "customizations": {
29
+ "vscode": {
30
+ "extensions": [
31
+ "EditorConfig.EditorConfig",
32
+ "ms-azuretools.vscode-docker",
33
+ "GitHub.copilot",
34
+ "GitHub.copilot-chat"
35
+ ],
36
+ "settings": {
37
+ "editor.formatOnSave": true
38
+ }
39
+ }
40
+ },
41
+ "mounts": [],
42
+ "remoteEnv": {
43
+ "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
44
+ },
45
+ "remoteUser": "vscode"
46
+ }
@@ -0,0 +1,12 @@
1
+ services:
2
+ devcontainer:
3
+ image: mcr.microsoft.com/devcontainers/base:bookworm
4
+ volumes:
5
+ # Mount workspace
6
+ - ../..:/workspaces:cached
7
+ command: sleep infinity
8
+ networks:
9
+ - devnet
10
+
11
+ networks:
12
+ devnet:
@@ -0,0 +1,20 @@
1
+ # Compose Template
2
+
3
+ Devcontainer with docker-compose for multi-service development environments.
4
+
5
+ ## What's Included
6
+
7
+ - Debian-based devcontainer service
8
+ - Docker-outside-of-Docker for container management
9
+ - Network configured for multi-service communication
10
+ - Git and essential tools
11
+
12
+ ## Usage
13
+
14
+ This template is designed to be extended with service overlays:
15
+
16
+ ```bash
17
+ npm run init -- --stack compose --language nodejs --database postgres+redis --observability otel-collector,jaeger,prometheus,grafana
18
+ ```
19
+
20
+ Overlays will add their services to the docker-compose.yml file.
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.schema.json",
3
+ "name": "Development Container",
4
+ "image": "mcr.microsoft.com/devcontainers/base:bookworm",
5
+ "features": {
6
+ "ghcr.io/devcontainers/features/common-utils:2": {
7
+ "installZsh": true,
8
+ "installOhMyZsh": true,
9
+ "upgradePackages": true,
10
+ "username": "vscode",
11
+ "userUid": "automatic",
12
+ "userGid": "automatic"
13
+ },
14
+ "ghcr.io/devcontainers/features/git:1": {
15
+ "version": "os-provided"
16
+ },
17
+ "./features/cross-distro-packages": {
18
+ "apt": "bash-completion curl wget vim less",
19
+ "apk": "bash-completion curl wget vim less"
20
+ }
21
+ },
22
+ "customizations": {
23
+ "vscode": {
24
+ "extensions": ["EditorConfig.EditorConfig", "GitHub.copilot", "GitHub.copilot-chat"],
25
+ "settings": {
26
+ "editor.formatOnSave": true
27
+ }
28
+ }
29
+ },
30
+ "mounts": [],
31
+ "remoteEnv": {
32
+ "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
33
+ },
34
+ "remoteUser": "vscode"
35
+ }
@@ -0,0 +1,21 @@
1
+ # Plain Template
2
+
3
+ Minimal devcontainer with Debian base image and essential tools.
4
+
5
+ ## What's Included
6
+
7
+ - Debian base image
8
+ - Git
9
+ - Zsh + Oh My Zsh
10
+ - Basic utilities (curl, wget, vim, less)
11
+ - VS Code essentials (EditorConfig, Copilot)
12
+
13
+ ## Usage
14
+
15
+ This template provides a clean starting point. Add language/framework overlays as needed:
16
+
17
+ ```bash
18
+ npm run init -- --stack plain --language nodejs
19
+ ```
20
+
21
+ Note: Plain template supports single language overlay. For multiple languages, use the compose template.