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.
- package/README.md +843 -0
- package/dist/scripts/init.d.ts +3 -0
- package/dist/scripts/init.d.ts.map +1 -0
- package/dist/scripts/init.js +1190 -0
- package/dist/scripts/init.js.map +1 -0
- package/dist/scripts/migrate-to-manifests.d.ts +12 -0
- package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
- package/dist/scripts/migrate-to-manifests.js +230 -0
- package/dist/scripts/migrate-to-manifests.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +6 -0
- package/dist/tool/questionnaire/composer.d.ts.map +1 -0
- package/dist/tool/questionnaire/composer.js +1232 -0
- package/dist/tool/questionnaire/composer.js.map +1 -0
- package/dist/tool/readme/markdown-parser.d.ts +30 -0
- package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
- package/dist/tool/readme/markdown-parser.js +139 -0
- package/dist/tool/readme/markdown-parser.js.map +1 -0
- package/dist/tool/readme/readme-generator.d.ts +9 -0
- package/dist/tool/readme/readme-generator.d.ts.map +1 -0
- package/dist/tool/readme/readme-generator.js +422 -0
- package/dist/tool/readme/readme-generator.js.map +1 -0
- package/dist/tool/schema/custom-loader.d.ts +17 -0
- package/dist/tool/schema/custom-loader.d.ts.map +1 -0
- package/dist/tool/schema/custom-loader.js +149 -0
- package/dist/tool/schema/custom-loader.js.map +1 -0
- package/dist/tool/schema/overlay-loader.d.ts +47 -0
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
- package/dist/tool/schema/overlay-loader.js +252 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -0
- package/dist/tool/schema/types.d.ts +212 -0
- package/dist/tool/schema/types.d.ts.map +1 -0
- package/dist/tool/schema/types.js +5 -0
- package/dist/tool/schema/types.js.map +1 -0
- package/docs/README.md +308 -0
- package/docs/architecture.md +233 -0
- package/docs/creating-overlays.md +549 -0
- package/docs/custom-patches.md +540 -0
- package/docs/dependencies.md +279 -0
- package/docs/examples/custom-patches-example.md +85 -0
- package/docs/examples.md +576 -0
- package/docs/messaging-comparison.md +265 -0
- package/docs/messaging-quick-start.md +385 -0
- package/docs/observability-workflow.md +537 -0
- package/docs/overlay-manifest-refactoring.md +214 -0
- package/docs/overlay-metadata-archive.md +54 -0
- package/docs/overlays.md +523 -0
- package/docs/presets-architecture.md +498 -0
- package/docs/presets.md +366 -0
- package/docs/publishing.md +476 -0
- package/docs/quick-reference.md +326 -0
- package/docs/ux.md +170 -0
- package/features/README.md +85 -0
- package/features/cross-distro-packages/README.md +146 -0
- package/features/cross-distro-packages/devcontainer-feature.json +20 -0
- package/features/cross-distro-packages/install.sh +58 -0
- package/features/local-secrets-manager/devcontainer-feature.json +18 -0
- package/features/local-secrets-manager/install.sh +127 -0
- package/features/project-scaffolder/devcontainer-feature.json +24 -0
- package/features/project-scaffolder/install.sh +100 -0
- package/features/team-conventions/devcontainer-feature.json +24 -0
- package/features/team-conventions/install.sh +93 -0
- package/overlays/.registry/README.md +14 -0
- package/overlays/.registry/base-images.yml +26 -0
- package/overlays/.registry/base-templates.yml +7 -0
- package/overlays/README.md +155 -0
- package/overlays/alertmanager/.env.example +5 -0
- package/overlays/alertmanager/README.md +465 -0
- package/overlays/alertmanager/alert-rules.yml +56 -0
- package/overlays/alertmanager/alertmanager.yml +42 -0
- package/overlays/alertmanager/devcontainer.patch.json +12 -0
- package/overlays/alertmanager/docker-compose.yml +20 -0
- package/overlays/alertmanager/overlay.yml +17 -0
- package/overlays/alertmanager/setup.sh +53 -0
- package/overlays/alertmanager/verify.sh +31 -0
- package/overlays/aws-cli/README.md +473 -0
- package/overlays/aws-cli/devcontainer.patch.json +13 -0
- package/overlays/aws-cli/overlay.yml +13 -0
- package/overlays/azure-cli/README.md +551 -0
- package/overlays/azure-cli/devcontainer.patch.json +8 -0
- package/overlays/azure-cli/overlay.yml +13 -0
- package/overlays/bun/README.md +312 -0
- package/overlays/bun/devcontainer.patch.json +41 -0
- package/overlays/bun/overlay.yml +16 -0
- package/overlays/bun/setup.sh +79 -0
- package/overlays/bun/verify.sh +30 -0
- package/overlays/codex/README.md +128 -0
- package/overlays/codex/devcontainer.patch.json +3 -0
- package/overlays/codex/overlay.yml +14 -0
- package/overlays/codex/setup.sh +24 -0
- package/overlays/codex/verify.sh +30 -0
- package/overlays/commitlint/README.md +333 -0
- package/overlays/commitlint/devcontainer.patch.json +8 -0
- package/overlays/commitlint/overlay.yml +16 -0
- package/overlays/commitlint/setup.sh +234 -0
- package/overlays/direnv/README.md +504 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/overlay.yml +13 -0
- package/overlays/direnv/setup.sh +139 -0
- package/overlays/docker-in-docker/README.md +534 -0
- package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
- package/overlays/docker-in-docker/overlay.yml +13 -0
- package/overlays/docker-sock/README.md +256 -0
- package/overlays/docker-sock/devcontainer.patch.json +9 -0
- package/overlays/docker-sock/docker-compose.yml +8 -0
- package/overlays/docker-sock/overlay.yml +13 -0
- package/overlays/dotnet/README.md +147 -0
- package/overlays/dotnet/devcontainer.patch.json +51 -0
- package/overlays/dotnet/global-tools.txt +24 -0
- package/overlays/dotnet/overlay.yml +13 -0
- package/overlays/dotnet/setup.sh +51 -0
- package/overlays/dotnet/verify.sh +26 -0
- package/overlays/gcloud/README.md +269 -0
- package/overlays/gcloud/devcontainer.patch.json +14 -0
- package/overlays/gcloud/overlay.yml +14 -0
- package/overlays/gcloud/verify.sh +52 -0
- package/overlays/git-helpers/README.md +168 -0
- package/overlays/git-helpers/devcontainer.patch.json +33 -0
- package/overlays/git-helpers/overlay.yml +15 -0
- package/overlays/git-helpers/setup.sh +91 -0
- package/overlays/go/README.md +293 -0
- package/overlays/go/devcontainer.patch.json +43 -0
- package/overlays/go/overlay.yml +15 -0
- package/overlays/go/setup.sh +33 -0
- package/overlays/go/verify.sh +40 -0
- package/overlays/grafana/.env.example +9 -0
- package/overlays/grafana/README.md +462 -0
- package/overlays/grafana/dashboard-provider.yml +11 -0
- package/overlays/grafana/dashboards/observability-overview.json +263 -0
- package/overlays/grafana/devcontainer.patch.json +12 -0
- package/overlays/grafana/docker-compose.yml +27 -0
- package/overlays/grafana/grafana-datasources.yml +57 -0
- package/overlays/grafana/overlay.yml +21 -0
- package/overlays/grafana/verify.sh +34 -0
- package/overlays/jaeger/.env.example +7 -0
- package/overlays/jaeger/README.md +867 -0
- package/overlays/jaeger/devcontainer.patch.json +12 -0
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +19 -0
- package/overlays/java/README.md +267 -0
- package/overlays/java/devcontainer.patch.json +44 -0
- package/overlays/java/overlay.yml +16 -0
- package/overlays/java/setup.sh +41 -0
- package/overlays/java/verify.sh +42 -0
- package/overlays/just/README.md +443 -0
- package/overlays/just/devcontainer.patch.json +3 -0
- package/overlays/just/overlay.yml +13 -0
- package/overlays/just/setup.sh +182 -0
- package/overlays/kubectl-helm/README.md +660 -0
- package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
- package/overlays/kubectl-helm/overlay.yml +13 -0
- package/overlays/loki/.env.example +5 -0
- package/overlays/loki/README.md +1156 -0
- package/overlays/loki/devcontainer.patch.json +12 -0
- package/overlays/loki/docker-compose.yml +18 -0
- package/overlays/loki/loki-config.yaml +45 -0
- package/overlays/loki/overlay.yml +17 -0
- package/overlays/minio/.env.example +9 -0
- package/overlays/minio/README.md +639 -0
- package/overlays/minio/devcontainer.patch.json +30 -0
- package/overlays/minio/docker-compose.yml +28 -0
- package/overlays/minio/overlay.yml +18 -0
- package/overlays/minio/setup.sh +61 -0
- package/overlays/minio/verify.sh +64 -0
- package/overlays/mkdocs/README.md +309 -0
- package/overlays/mkdocs/devcontainer.patch.json +24 -0
- package/overlays/mkdocs/overlay.yml +15 -0
- package/overlays/modern-cli-tools/README.md +556 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
- package/overlays/modern-cli-tools/overlay.yml +13 -0
- package/overlays/modern-cli-tools/setup.sh +153 -0
- package/overlays/mongodb/.env.example +9 -0
- package/overlays/mongodb/README.md +481 -0
- package/overlays/mongodb/devcontainer.patch.json +32 -0
- package/overlays/mongodb/docker-compose.yml +44 -0
- package/overlays/mongodb/overlay.yml +17 -0
- package/overlays/mongodb/verify.sh +48 -0
- package/overlays/mysql/.env.example +11 -0
- package/overlays/mysql/README.md +542 -0
- package/overlays/mysql/devcontainer.patch.json +34 -0
- package/overlays/mysql/docker-compose.yml +55 -0
- package/overlays/mysql/overlay.yml +16 -0
- package/overlays/mysql/verify.sh +48 -0
- package/overlays/nats/.env.example +5 -0
- package/overlays/nats/README.md +762 -0
- package/overlays/nats/devcontainer.patch.json +24 -0
- package/overlays/nats/docker-compose.yml +31 -0
- package/overlays/nats/overlay.yml +18 -0
- package/overlays/nats/verify.sh +50 -0
- package/overlays/ngrok/README.md +503 -0
- package/overlays/ngrok/devcontainer.patch.json +3 -0
- package/overlays/ngrok/overlay.yml +14 -0
- package/overlays/ngrok/setup.sh +125 -0
- package/overlays/nodejs/README.md +192 -0
- package/overlays/nodejs/devcontainer.patch.json +49 -0
- package/overlays/nodejs/global-packages.txt +16 -0
- package/overlays/nodejs/overlay.yml +14 -0
- package/overlays/nodejs/setup.sh +46 -0
- package/overlays/nodejs/verify.sh +32 -0
- package/overlays/otel-collector/.env.example +9 -0
- package/overlays/otel-collector/README.md +1257 -0
- package/overlays/otel-collector/devcontainer.patch.json +28 -0
- package/overlays/otel-collector/docker-compose.yml +22 -0
- package/overlays/otel-collector/otel-collector-config.yaml +68 -0
- package/overlays/otel-collector/overlay.yml +21 -0
- package/overlays/otel-collector/setup.sh +49 -0
- package/overlays/otel-demo-nodejs/.env.example +2 -0
- package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
- package/overlays/otel-demo-nodejs/README.md +409 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
- package/overlays/otel-demo-nodejs/overlay.yml +23 -0
- package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
- package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
- package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
- package/overlays/otel-demo-nodejs/verify.sh +31 -0
- package/overlays/otel-demo-python/.env.example +2 -0
- package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
- package/overlays/otel-demo-python/README.md +82 -0
- package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
- package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-python/docker-compose.yml +19 -0
- package/overlays/otel-demo-python/overlay.yml +23 -0
- package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
- package/overlays/otel-demo-python/verify.sh +31 -0
- package/overlays/playwright/README.md +629 -0
- package/overlays/playwright/devcontainer.patch.json +9 -0
- package/overlays/playwright/overlay.yml +13 -0
- package/overlays/postgres/.env.example +6 -0
- package/overlays/postgres/README.md +602 -0
- package/overlays/postgres/devcontainer.patch.json +21 -0
- package/overlays/postgres/docker-compose.yml +22 -0
- package/overlays/postgres/overlay.yml +15 -0
- package/overlays/postgres/verify.sh +45 -0
- package/overlays/powershell/README.md +314 -0
- package/overlays/powershell/devcontainer.patch.json +22 -0
- package/overlays/powershell/overlay.yml +13 -0
- package/overlays/powershell/setup.sh +29 -0
- package/overlays/powershell/verify.sh +38 -0
- package/overlays/pre-commit/README.md +263 -0
- package/overlays/pre-commit/devcontainer.patch.json +9 -0
- package/overlays/pre-commit/overlay.yml +16 -0
- package/overlays/pre-commit/setup.sh +129 -0
- package/overlays/presets/docs-site.yml +118 -0
- package/overlays/presets/fullstack.yml +181 -0
- package/overlays/presets/microservice.yml +118 -0
- package/overlays/presets/web-api.yml +109 -0
- package/overlays/prometheus/.env.example +5 -0
- package/overlays/prometheus/README.md +1246 -0
- package/overlays/prometheus/devcontainer.patch.json +12 -0
- package/overlays/prometheus/docker-compose.yml +22 -0
- package/overlays/prometheus/overlay.yml +17 -0
- package/overlays/prometheus/prometheus.yml +12 -0
- package/overlays/prometheus/verify.sh +34 -0
- package/overlays/promtail/.env.example +2 -0
- package/overlays/promtail/README.md +357 -0
- package/overlays/promtail/devcontainer.patch.json +5 -0
- package/overlays/promtail/docker-compose.yml +16 -0
- package/overlays/promtail/overlay.yml +17 -0
- package/overlays/promtail/promtail-config.yaml +60 -0
- package/overlays/promtail/verify.sh +31 -0
- package/overlays/pulumi/README.md +472 -0
- package/overlays/pulumi/devcontainer.patch.json +13 -0
- package/overlays/pulumi/overlay.yml +14 -0
- package/overlays/pulumi/verify.sh +31 -0
- package/overlays/python/README.md +919 -0
- package/overlays/python/devcontainer.patch.json +41 -0
- package/overlays/python/overlay.yml +12 -0
- package/overlays/python/requirements-overlay.txt +13 -0
- package/overlays/python/setup.sh +47 -0
- package/overlays/python/verify.sh +32 -0
- package/overlays/rabbitmq/.env.example +7 -0
- package/overlays/rabbitmq/README.md +680 -0
- package/overlays/rabbitmq/devcontainer.patch.json +28 -0
- package/overlays/rabbitmq/docker-compose.yml +30 -0
- package/overlays/rabbitmq/overlay.yml +18 -0
- package/overlays/rabbitmq/verify.sh +41 -0
- package/overlays/redis/.env.example +4 -0
- package/overlays/redis/README.md +776 -0
- package/overlays/redis/devcontainer.patch.json +21 -0
- package/overlays/redis/docker-compose.yml +21 -0
- package/overlays/redis/overlay.yml +15 -0
- package/overlays/redis/verify.sh +41 -0
- package/overlays/redpanda/.env.example +10 -0
- package/overlays/redpanda/README.md +703 -0
- package/overlays/redpanda/devcontainer.patch.json +37 -0
- package/overlays/redpanda/docker-compose.yml +67 -0
- package/overlays/redpanda/overlay.yml +21 -0
- package/overlays/redpanda/verify.sh +48 -0
- package/overlays/rust/README.md +299 -0
- package/overlays/rust/devcontainer.patch.json +39 -0
- package/overlays/rust/overlay.yml +15 -0
- package/overlays/rust/setup.sh +36 -0
- package/overlays/rust/verify.sh +51 -0
- package/overlays/sqlite/README.md +584 -0
- package/overlays/sqlite/devcontainer.patch.json +14 -0
- package/overlays/sqlite/overlay.yml +15 -0
- package/overlays/sqlite/setup.sh +27 -0
- package/overlays/sqlite/verify.sh +43 -0
- package/overlays/sqlserver/.env.example +6 -0
- package/overlays/sqlserver/README.md +592 -0
- package/overlays/sqlserver/devcontainer.patch.json +22 -0
- package/overlays/sqlserver/docker-compose.yml +32 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/sqlserver/verify.sh +30 -0
- package/overlays/tempo/.env.example +5 -0
- package/overlays/tempo/README.md +273 -0
- package/overlays/tempo/devcontainer.patch.json +12 -0
- package/overlays/tempo/docker-compose.yml +20 -0
- package/overlays/tempo/overlay.yml +20 -0
- package/overlays/tempo/tempo-config.yaml +32 -0
- package/overlays/tempo/verify.sh +31 -0
- package/overlays/terraform/README.md +389 -0
- package/overlays/terraform/devcontainer.patch.json +15 -0
- package/overlays/terraform/overlay.yml +14 -0
- package/overlays/terraform/verify.sh +63 -0
- package/package.json +74 -0
- package/templates/README.md +285 -0
- package/templates/compose/.devcontainer/devcontainer.json +46 -0
- package/templates/compose/.devcontainer/docker-compose.yml +12 -0
- package/templates/compose/README.md +20 -0
- package/templates/plain/.devcontainer/devcontainer.json +35 -0
- package/templates/plain/README.md +21 -0
- package/tool/README.md +281 -0
- package/tool/schema/base-images.schema.json +43 -0
- package/tool/schema/base-templates.schema.json +34 -0
- package/tool/schema/config.schema.json +71 -0
- 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,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"
|