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,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,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.
|