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,12 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "runServices": ["jaeger"],
4
+ "_serviceOrder": 1,
5
+ "forwardPorts": [16686],
6
+ "portsAttributes": {
7
+ "16686": {
8
+ "label": "Jaeger UI",
9
+ "onAutoForward": "openBrowser"
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,17 @@
1
+ version: '3.8'
2
+ services:
3
+ jaeger:
4
+ image: jaegertracing/all-in-one:${JAEGER_VERSION:-latest}
5
+ environment:
6
+ - COLLECTOR_OTLP_ENABLED=true
7
+ ports:
8
+ - '${JAEGER_UI_PORT:-16686}:16686' # Jaeger UI
9
+ # - "${JAEGER_OTLP_GRPC_PORT:-4317}:4317" # OTLP gRPC receiver
10
+ # - "${JAEGER_OTLP_HTTP_PORT:-4318}:4318" # OTLP HTTP receiver
11
+ # Note: OTLP ports (4317/4318) are not exposed to avoid conflict with otel-collector
12
+ # Apps should send telemetry to otel-collector, which forwards to Jaeger if both are used
13
+ networks:
14
+ - devnet
15
+
16
+ networks:
17
+ devnet:
@@ -0,0 +1,19 @@
1
+ id: jaeger
2
+ name: Jaeger
3
+ description: Distributed tracing backend
4
+ category: observability
5
+ supports:
6
+ - compose
7
+ requires: []
8
+ suggests: []
9
+ conflicts:
10
+ - tempo
11
+ tags:
12
+ - observability
13
+ - tracing
14
+ - jaeger
15
+ ports:
16
+ - 16686
17
+ - 14250
18
+ - 14268
19
+ order: 1
@@ -0,0 +1,267 @@
1
+ # Java Overlay
2
+
3
+ Adds Eclipse Temurin JDK 21 (LTS) with Maven and Gradle for enterprise Java development.
4
+
5
+ ## Features
6
+
7
+ - **Eclipse Temurin JDK 21** (LTS) - Open-source Java runtime
8
+ - **Maven** - Dependency management and build tool
9
+ - **Gradle** - Modern build automation
10
+ - **VS Code Extensions:**
11
+ - Java Extension Pack (vscjava.vscode-java-pack) - Complete Java IDE experience
12
+ - Gradle for Java (vscjava.vscode-gradle)
13
+ - Maven for Java (vscjava.vscode-maven)
14
+ - **Language Server Protocol** - IntelliSense, refactoring, debugging
15
+ - **Automatic dependency installation** - Runs Maven/Gradle on container creation
16
+
17
+ ## How It Works
18
+
19
+ This overlay uses the official devcontainers Java feature to install Eclipse Temurin JDK 21 with Maven and Gradle. The Java Extension Pack provides comprehensive IDE features including IntelliSense, debugging, test running, and project management.
20
+
21
+ **Installation method:**
22
+
23
+ - Eclipse Temurin JDK via SDKMAN
24
+ - Maven and Gradle installed via devcontainer feature
25
+ - Java tools accessible via PATH
26
+
27
+ ## Common Commands
28
+
29
+ ### Maven Projects
30
+
31
+ ```bash
32
+ # Create new Maven project
33
+ mvn archetype:generate \
34
+ -DgroupId=com.example \
35
+ -DartifactId=my-app \
36
+ -DarchetypeArtifactId=maven-archetype-quickstart \
37
+ -DinteractiveMode=false
38
+
39
+ # Build project
40
+ mvn clean install
41
+
42
+ # Run application
43
+ mvn exec:java -Dexec.mainClass="com.example.App"
44
+
45
+ # Run tests
46
+ mvn test
47
+
48
+ # Package JAR
49
+ mvn package
50
+
51
+ # Skip tests
52
+ mvn install -DskipTests
53
+ ```
54
+
55
+ ### Gradle Projects
56
+
57
+ ```bash
58
+ # Initialize new project
59
+ gradle init --type java-application
60
+
61
+ # Build project
62
+ gradle build
63
+
64
+ # Run application
65
+ gradle run
66
+
67
+ # Run tests
68
+ gradle test
69
+
70
+ # Create JAR
71
+ gradle jar
72
+
73
+ # Clean build
74
+ gradle clean build
75
+ ```
76
+
77
+ ### Spring Boot
78
+
79
+ ```bash
80
+ # Maven - Run Spring Boot app
81
+ mvn spring-boot:run
82
+
83
+ # Gradle - Run Spring Boot app
84
+ gradle bootRun
85
+
86
+ # Build executable JAR
87
+ mvn clean package
88
+ # or
89
+ gradle bootJar
90
+
91
+ # Run with profiles
92
+ mvn spring-boot:run -Dspring-boot.run.profiles=dev
93
+ ```
94
+
95
+ ### Dependency Management
96
+
97
+ ```bash
98
+ # Maven - Add dependency (edit pom.xml)
99
+ # Then resolve:
100
+ mvn dependency:resolve
101
+
102
+ # Display dependency tree
103
+ mvn dependency:tree
104
+
105
+ # Gradle - Add dependency (edit build.gradle)
106
+ # Then sync:
107
+ gradle dependencies
108
+
109
+ # Display dependency tree
110
+ gradle dependencies --configuration compileClasspath
111
+ ```
112
+
113
+ ## Use Cases
114
+
115
+ - **Spring Boot applications** - REST APIs, microservices, web applications
116
+ - **Enterprise Java** - J2EE, Jakarta EE applications
117
+ - **Apache Kafka** - Event streaming applications
118
+ - **Android backend** - Services for mobile apps
119
+ - **Data processing** - Apache Spark, Hadoop jobs
120
+ - **Microservices** - Cloud-native Java services
121
+
122
+ **Integrates well with:**
123
+
124
+ - `postgres`, `mysql`, `mongodb` - Database connectivity (JDBC)
125
+ - `redis` - Caching layer (Jedis, Lettuce)
126
+ - Apache Kafka - Event streaming (Spring Kafka)
127
+ - `otel-collector`, `jaeger` - Distributed tracing (OpenTelemetry Java)
128
+ - `prometheus`, `grafana` - Metrics and monitoring (Micrometer)
129
+
130
+ ## Configuration
131
+
132
+ ### JDK Version
133
+
134
+ The overlay installs **Java 21 (LTS)**. To use a different version, modify `devcontainer.patch.json`:
135
+
136
+ ```json
137
+ {
138
+ "features": {
139
+ "ghcr.io/devcontainers/features/java:1": {
140
+ "version": "17" // Change to 17, 21, or latest
141
+ }
142
+ }
143
+ }
144
+ ```
145
+
146
+ ### Maven Settings
147
+
148
+ Custom Maven settings can be placed in `~/.m2/settings.xml`:
149
+
150
+ ```xml
151
+ <settings>
152
+ <mirrors>
153
+ <mirror>
154
+ <id>central</id>
155
+ <url>https://repo.maven.apache.org/maven2</url>
156
+ <mirrorOf>central</mirrorOf>
157
+ </mirror>
158
+ </mirrors>
159
+ </settings>
160
+ ```
161
+
162
+ ### Gradle Properties
163
+
164
+ Custom Gradle properties in `~/.gradle/gradle.properties`:
165
+
166
+ ```properties
167
+ org.gradle.daemon=true
168
+ org.gradle.parallel=true
169
+ org.gradle.caching=true
170
+ ```
171
+
172
+ ## Application Integration
173
+
174
+ ### Spring Boot Example
175
+
176
+ **pom.xml:**
177
+
178
+ ```xml
179
+ <dependency>
180
+ <groupId>org.springframework.boot</groupId>
181
+ <artifactId>spring-boot-starter-web</artifactId>
182
+ </dependency>
183
+ ```
184
+
185
+ **Application.java:**
186
+
187
+ ```java
188
+ import org.springframework.boot.SpringApplication;
189
+ import org.springframework.boot.autoconfigure.SpringBootApplication;
190
+ import org.springframework.web.bind.annotation.GetMapping;
191
+ import org.springframework.web.bind.annotation.RestController;
192
+
193
+ @SpringBootApplication
194
+ @RestController
195
+ public class Application {
196
+ public static void main(String[] args) {
197
+ SpringApplication.run(Application.class, args);
198
+ }
199
+
200
+ @GetMapping("/")
201
+ public String hello() {
202
+ return "Hello from Spring Boot!";
203
+ }
204
+ }
205
+ ```
206
+
207
+ **Run:**
208
+
209
+ ```bash
210
+ mvn spring-boot:run
211
+ # Access at http://localhost:8080
212
+ ```
213
+
214
+ ## Troubleshooting
215
+
216
+ ### Issue: JAVA_HOME not set
217
+
218
+ **Solution:**
219
+
220
+ ```bash
221
+ # Check JAVA_HOME
222
+ echo $JAVA_HOME
223
+
224
+ # Should output: /usr/local/sdkman/candidates/java/current
225
+
226
+ # If not set, add to shell profile
227
+ export JAVA_HOME=/usr/local/sdkman/candidates/java/current
228
+ ```
229
+
230
+ ### Issue: Maven/Gradle not found
231
+
232
+ **Symptoms:**
233
+
234
+ - `mvn: command not found`
235
+ - `gradle: command not found`
236
+
237
+ **Solution:**
238
+ Rebuild the devcontainer - Maven and Gradle are installed via the Java feature.
239
+
240
+ ### Issue: Out of memory during build
241
+
242
+ **Solution:**
243
+
244
+ ```bash
245
+ # Maven - increase heap size
246
+ export MAVEN_OPTS="-Xmx2048m"
247
+ mvn clean install
248
+
249
+ # Gradle - configure in gradle.properties
250
+ org.gradle.jvmargs=-Xmx2048m
251
+ ```
252
+
253
+ ## References
254
+
255
+ - [Eclipse Temurin](https://adoptium.net/) - Open-source JDK distribution
256
+ - [Maven Documentation](https://maven.apache.org/guides/) - Build tool
257
+ - [Gradle Documentation](https://docs.gradle.org/) - Build automation
258
+ - [Spring Boot](https://spring.io/projects/spring-boot) - Framework for Java apps
259
+ - [Java Extension Pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)
260
+
261
+ **Related Overlays:**
262
+
263
+ - `postgres` - PostgreSQL database (JDBC)
264
+ - `redis` - Redis cache (Jedis, Lettuce)
265
+ - `docker-sock` - Docker access for Testcontainers
266
+ - `prometheus` - Metrics collection (Micrometer)
267
+ - `jaeger` - Distributed tracing (OpenTelemetry)
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "./features/cross-distro-packages": {
5
+ "apt": "build-essential",
6
+ "apk": "build-base"
7
+ },
8
+ "ghcr.io/devcontainers/features/java:1": {
9
+ "version": "21",
10
+ "jdkDistro": "tem",
11
+ "installGradle": "true",
12
+ "installMaven": "true"
13
+ }
14
+ },
15
+ "customizations": {
16
+ "vscode": {
17
+ "extensions": [
18
+ "vscjava.vscode-java-pack",
19
+ "vscjava.vscode-gradle",
20
+ "vscjava.vscode-maven"
21
+ ],
22
+ "settings": {
23
+ "java.configuration.runtimes": [],
24
+ "[java]": {
25
+ "editor.formatOnSave": true
26
+ }
27
+ }
28
+ }
29
+ },
30
+ "remoteEnv": {
31
+ "JAVA_HOME": "/usr/local/sdkman/candidates/java/current"
32
+ },
33
+ "forwardPorts": [8080, 8081],
34
+ "portsAttributes": {
35
+ "8080": {
36
+ "label": "Web App",
37
+ "onAutoForward": "openBrowser"
38
+ },
39
+ "8081": {
40
+ "label": "Admin/Actuator",
41
+ "onAutoForward": "notify"
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,16 @@
1
+ id: java
2
+ name: Java
3
+ description: Eclipse Temurin JDK 21 with Maven and Gradle
4
+ category: language
5
+ supports: []
6
+ requires: []
7
+ suggests: []
8
+ conflicts: []
9
+ tags:
10
+ - language
11
+ - java
12
+ - maven
13
+ - gradle
14
+ ports:
15
+ - 8080
16
+ - 8081
@@ -0,0 +1,41 @@
1
+ #!/bin/bash
2
+ # Java setup script - Verify Java, Maven, and Gradle installation
3
+
4
+ set -e
5
+
6
+ echo "🔧 Setting up Java development environment..."
7
+
8
+ # Verify Java is installed
9
+ if command -v java &> /dev/null; then
10
+ JAVA_VERSION=$(java -version 2>&1 | head -n 1)
11
+ echo "✓ Java found: $JAVA_VERSION"
12
+ else
13
+ echo "⚠️ Java not found"
14
+ fi
15
+
16
+ # Verify Maven is installed
17
+ if command -v mvn &> /dev/null; then
18
+ MVN_VERSION=$(mvn -version | head -n 1)
19
+ echo "✓ Maven found: $MVN_VERSION"
20
+ else
21
+ echo "⚠️ Maven not found"
22
+ fi
23
+
24
+ # Verify Gradle is installed
25
+ if command -v gradle &> /dev/null; then
26
+ GRADLE_VERSION=$(gradle --version | grep "Gradle " | head -n 1)
27
+ echo "✓ Gradle found: $GRADLE_VERSION"
28
+ else
29
+ echo "⚠️ Gradle not found"
30
+ fi
31
+
32
+ # Install Maven/Gradle project dependencies if build files exist
33
+ if [ -f "pom.xml" ]; then
34
+ echo "📦 Maven project detected, installing dependencies..."
35
+ mvn dependency:resolve || echo "⚠️ Maven dependency installation failed or skipped"
36
+ elif [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then
37
+ echo "📦 Gradle project detected, installing dependencies..."
38
+ gradle dependencies || echo "⚠️ Gradle dependency installation failed or skipped"
39
+ fi
40
+
41
+ echo "✓ Java setup complete"
@@ -0,0 +1,42 @@
1
+ #!/bin/bash
2
+ # Verification script for Java overlay
3
+
4
+ set -e
5
+
6
+ echo "🔍 Verifying Java overlay..."
7
+ echo ""
8
+
9
+ # Check Java is installed
10
+ echo "1️⃣ Checking Java..."
11
+ if command -v java &> /dev/null; then
12
+ java -version
13
+ echo " ✅ Java found"
14
+ else
15
+ echo " ❌ Java not found"
16
+ exit 1
17
+ fi
18
+
19
+ # Check Maven is installed
20
+ echo ""
21
+ echo "2️⃣ Checking Maven..."
22
+ if command -v mvn &> /dev/null; then
23
+ mvn --version | head -n 1
24
+ echo " ✅ Maven found"
25
+ else
26
+ echo " ❌ Maven not found"
27
+ exit 1
28
+ fi
29
+
30
+ # Check Gradle is installed
31
+ echo ""
32
+ echo "3️⃣ Checking Gradle..."
33
+ if command -v gradle &> /dev/null; then
34
+ gradle --version | grep "Gradle " | head -n 1
35
+ echo " ✅ Gradle found"
36
+ else
37
+ echo " ❌ Gradle not found"
38
+ exit 1
39
+ fi
40
+
41
+ echo ""
42
+ echo "✅ Java overlay verification complete"