container-superposition 0.1.1 → 0.1.4

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 (178) hide show
  1. package/README.md +569 -8
  2. package/dist/scripts/init.js +436 -254
  3. package/dist/scripts/init.js.map +1 -1
  4. package/dist/tool/commands/doctor.d.ts +15 -0
  5. package/dist/tool/commands/doctor.d.ts.map +1 -0
  6. package/dist/tool/commands/doctor.js +862 -0
  7. package/dist/tool/commands/doctor.js.map +1 -0
  8. package/dist/tool/commands/explain.d.ts +13 -0
  9. package/dist/tool/commands/explain.d.ts.map +1 -0
  10. package/dist/tool/commands/explain.js +299 -0
  11. package/dist/tool/commands/explain.js.map +1 -0
  12. package/dist/tool/commands/list.d.ts +16 -0
  13. package/dist/tool/commands/list.d.ts.map +1 -0
  14. package/dist/tool/commands/list.js +121 -0
  15. package/dist/tool/commands/list.js.map +1 -0
  16. package/dist/tool/commands/plan.d.ts +67 -0
  17. package/dist/tool/commands/plan.d.ts.map +1 -0
  18. package/dist/tool/commands/plan.js +851 -0
  19. package/dist/tool/commands/plan.js.map +1 -0
  20. package/dist/tool/questionnaire/composer.d.ts +16 -2
  21. package/dist/tool/questionnaire/composer.d.ts.map +1 -1
  22. package/dist/tool/questionnaire/composer.js +411 -200
  23. package/dist/tool/questionnaire/composer.js.map +1 -1
  24. package/dist/tool/readme/markdown-parser.d.ts.map +1 -1
  25. package/dist/tool/readme/markdown-parser.js.map +1 -1
  26. package/dist/tool/readme/readme-generator.d.ts.map +1 -1
  27. package/dist/tool/readme/readme-generator.js +11 -6
  28. package/dist/tool/readme/readme-generator.js.map +1 -1
  29. package/dist/tool/schema/deployment-targets.d.ts +77 -0
  30. package/dist/tool/schema/deployment-targets.d.ts.map +1 -0
  31. package/dist/tool/schema/deployment-targets.js +91 -0
  32. package/dist/tool/schema/deployment-targets.js.map +1 -0
  33. package/dist/tool/schema/manifest-migrations.d.ts +51 -0
  34. package/dist/tool/schema/manifest-migrations.d.ts.map +1 -0
  35. package/dist/tool/schema/manifest-migrations.js +159 -0
  36. package/dist/tool/schema/manifest-migrations.js.map +1 -0
  37. package/dist/tool/schema/overlay-loader.d.ts +1 -1
  38. package/dist/tool/schema/overlay-loader.d.ts.map +1 -1
  39. package/dist/tool/schema/overlay-loader.js +42 -14
  40. package/dist/tool/schema/overlay-loader.js.map +1 -1
  41. package/dist/tool/schema/types.d.ts +62 -2
  42. package/dist/tool/schema/types.d.ts.map +1 -1
  43. package/dist/tool/utils/gitignore.d.ts +15 -0
  44. package/dist/tool/utils/gitignore.d.ts.map +1 -0
  45. package/dist/tool/utils/gitignore.js +41 -0
  46. package/dist/tool/utils/gitignore.js.map +1 -0
  47. package/dist/tool/utils/merge.d.ts +134 -0
  48. package/dist/tool/utils/merge.d.ts.map +1 -0
  49. package/dist/tool/utils/merge.js +277 -0
  50. package/dist/tool/utils/merge.js.map +1 -0
  51. package/dist/tool/utils/port-utils.d.ts +29 -0
  52. package/dist/tool/utils/port-utils.d.ts.map +1 -0
  53. package/dist/tool/utils/port-utils.js +128 -0
  54. package/dist/tool/utils/port-utils.js.map +1 -0
  55. package/dist/tool/utils/services-export.d.ts +14 -0
  56. package/dist/tool/utils/services-export.d.ts.map +1 -0
  57. package/dist/tool/utils/services-export.js +478 -0
  58. package/dist/tool/utils/services-export.js.map +1 -0
  59. package/dist/tool/utils/summary.d.ts +69 -0
  60. package/dist/tool/utils/summary.d.ts.map +1 -0
  61. package/dist/tool/utils/summary.js +260 -0
  62. package/dist/tool/utils/summary.js.map +1 -0
  63. package/dist/tool/utils/version.d.ts +9 -0
  64. package/dist/tool/utils/version.d.ts.map +1 -0
  65. package/dist/tool/utils/version.js +32 -0
  66. package/dist/tool/utils/version.js.map +1 -0
  67. package/docs/architecture.md +25 -21
  68. package/docs/deployment-targets.md +150 -0
  69. package/docs/discovery-commands.md +442 -0
  70. package/docs/merge-strategy.md +700 -0
  71. package/docs/minimal-and-editor.md +265 -0
  72. package/docs/overlay-imports.md +209 -0
  73. package/docs/overlay-manifest-refactoring.md +2 -2
  74. package/docs/overlay-metadata-archive.md +1 -1
  75. package/docs/overlays.md +139 -28
  76. package/docs/presets-architecture.md +3 -3
  77. package/docs/presets.md +1 -1
  78. package/docs/publishing.md +36 -35
  79. package/docs/team-workflow.md +540 -0
  80. package/overlays/.presets/data-engineering.yml +392 -0
  81. package/overlays/.presets/event-sourced-service.yml +262 -0
  82. package/overlays/.presets/frontend.yml +287 -0
  83. package/overlays/.presets/k8s-operator-dev.yml +462 -0
  84. package/overlays/{presets → .presets}/microservice.yml +32 -6
  85. package/overlays/.presets/web-api.yml +129 -0
  86. package/overlays/.registry/README.md +1 -1
  87. package/overlays/.registry/deployment-targets.yml +54 -0
  88. package/overlays/.shared/README.md +43 -0
  89. package/overlays/.shared/compose/common-healthchecks.yml +38 -0
  90. package/overlays/.shared/otel/instrumentation.env +20 -0
  91. package/overlays/.shared/otel/otel-base-config.yaml +30 -0
  92. package/overlays/.shared/vscode/recommended-extensions.json +14 -0
  93. package/overlays/README.md +1 -1
  94. package/overlays/cloudflared/README.md +190 -0
  95. package/overlays/cloudflared/devcontainer.patch.json +3 -0
  96. package/overlays/cloudflared/overlay.yml +15 -0
  97. package/overlays/cloudflared/setup.sh +49 -0
  98. package/overlays/cloudflared/verify.sh +21 -0
  99. package/overlays/codex/overlay.yml +1 -0
  100. package/overlays/direnv/README.md +6 -4
  101. package/overlays/direnv/setup.sh +0 -12
  102. package/overlays/duckdb/README.md +274 -0
  103. package/overlays/duckdb/devcontainer.patch.json +10 -0
  104. package/overlays/duckdb/overlay.yml +17 -0
  105. package/overlays/duckdb/setup.sh +45 -0
  106. package/overlays/duckdb/verify.sh +32 -0
  107. package/overlays/git-helpers/overlay.yml +1 -0
  108. package/overlays/grafana/README.md +5 -5
  109. package/overlays/grafana/dashboard-provider.yml +1 -1
  110. package/overlays/grafana/docker-compose.yml +2 -2
  111. package/overlays/grafana/overlay.yml +6 -1
  112. package/overlays/grpc-tools/README.md +242 -0
  113. package/overlays/grpc-tools/devcontainer.patch.json +14 -0
  114. package/overlays/grpc-tools/overlay.yml +14 -0
  115. package/overlays/grpc-tools/setup.sh +57 -0
  116. package/overlays/grpc-tools/verify.sh +47 -0
  117. package/overlays/jaeger/overlay.yml +16 -3
  118. package/overlays/jupyter/.env.example +6 -0
  119. package/overlays/jupyter/README.md +210 -0
  120. package/overlays/jupyter/devcontainer.patch.json +14 -0
  121. package/overlays/jupyter/docker-compose.yml +23 -0
  122. package/overlays/jupyter/overlay.yml +18 -0
  123. package/overlays/jupyter/verify.sh +35 -0
  124. package/overlays/keycloak/.env.example +5 -0
  125. package/overlays/keycloak/README.md +238 -0
  126. package/overlays/keycloak/devcontainer.patch.json +17 -0
  127. package/overlays/keycloak/docker-compose.yml +32 -0
  128. package/overlays/keycloak/overlay.yml +23 -0
  129. package/overlays/keycloak/verify.sh +54 -0
  130. package/overlays/kind/README.md +221 -0
  131. package/overlays/kind/devcontainer.patch.json +10 -0
  132. package/overlays/kind/overlay.yml +18 -0
  133. package/overlays/kind/setup.sh +43 -0
  134. package/overlays/kind/verify.sh +40 -0
  135. package/overlays/localstack/.env.example +6 -0
  136. package/overlays/localstack/README.md +188 -0
  137. package/overlays/localstack/devcontainer.patch.json +21 -0
  138. package/overlays/localstack/docker-compose.yml +25 -0
  139. package/overlays/localstack/overlay.yml +18 -0
  140. package/overlays/localstack/verify.sh +47 -0
  141. package/overlays/loki/overlay.yml +6 -1
  142. package/overlays/mailpit/.env.example +4 -0
  143. package/overlays/mailpit/README.md +191 -0
  144. package/overlays/mailpit/devcontainer.patch.json +20 -0
  145. package/overlays/mailpit/docker-compose.yml +17 -0
  146. package/overlays/mailpit/overlay.yml +26 -0
  147. package/overlays/mailpit/verify.sh +52 -0
  148. package/overlays/modern-cli-tools/overlay.yml +1 -0
  149. package/overlays/mongodb/overlay.yml +12 -2
  150. package/overlays/mysql/overlay.yml +12 -2
  151. package/overlays/nats/overlay.yml +12 -2
  152. package/overlays/ngrok/overlay.yml +2 -1
  153. package/overlays/openapi-tools/README.md +243 -0
  154. package/overlays/openapi-tools/devcontainer.patch.json +10 -0
  155. package/overlays/openapi-tools/overlay.yml +16 -0
  156. package/overlays/openapi-tools/setup.sh +45 -0
  157. package/overlays/openapi-tools/verify.sh +51 -0
  158. package/overlays/otel-collector/overlay.yml.example +26 -0
  159. package/overlays/postgres/overlay.yml +6 -1
  160. package/overlays/prometheus/overlay.yml +6 -1
  161. package/overlays/python/README.md +51 -35
  162. package/overlays/python/devcontainer.patch.json +7 -4
  163. package/overlays/python/setup.sh +50 -23
  164. package/overlays/python/verify.sh +29 -1
  165. package/overlays/rabbitmq/overlay.yml +12 -2
  166. package/overlays/redis/overlay.yml +6 -1
  167. package/overlays/tilt/README.md +259 -0
  168. package/overlays/tilt/devcontainer.patch.json +17 -0
  169. package/overlays/tilt/overlay.yml +19 -0
  170. package/overlays/tilt/setup.sh +25 -0
  171. package/overlays/tilt/verify.sh +24 -0
  172. package/package.json +8 -6
  173. package/tool/README.md +12 -16
  174. package/tool/schema/overlay-manifest.schema.json +64 -4
  175. package/tool/schema/superposition-manifest.schema.json +104 -0
  176. package/overlays/presets/web-api.yml +0 -109
  177. /package/overlays/{presets → .presets}/docs-site.yml +0 -0
  178. /package/overlays/{presets → .presets}/fullstack.yml +0 -0
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "./features/cross-distro-packages": {
5
+ "apt": "protobuf-compiler",
6
+ "apk": "protobuf"
7
+ }
8
+ },
9
+ "customizations": {
10
+ "vscode": {
11
+ "extensions": ["zxh404.vscode-proto3", "bufbuild.vscode-buf"]
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ id: grpc-tools
2
+ name: gRPC Tools
3
+ description: Protocol Buffers compiler, Buf, and grpcurl for gRPC development
4
+ category: dev
5
+ supports: []
6
+ requires: []
7
+ suggests: []
8
+ conflicts: []
9
+ tags:
10
+ - dev
11
+ - grpc
12
+ - protobuf
13
+ - api
14
+ ports: []
@@ -0,0 +1,57 @@
1
+ #!/bin/bash
2
+ # gRPC Tools setup script
3
+ # Installs buf CLI and grpcurl
4
+
5
+ set -e
6
+
7
+ echo "🔧 Setting up gRPC Tools..."
8
+
9
+ # Install buf CLI
10
+ echo "đŸ“Ļ Installing buf CLI..."
11
+ BUF_VERSION="${BUF_VERSION:-1.47.2}"
12
+
13
+ # Detect architecture
14
+ ARCH=$(uname -m)
15
+ case "$ARCH" in
16
+ x86_64) BUF_ARCH="x86_64" ;;
17
+ aarch64 | arm64) BUF_ARCH="aarch64" ;;
18
+ *) echo " âš ī¸ Unsupported architecture: $ARCH, skipping buf installation" ; BUF_ARCH="" ;;
19
+ esac
20
+
21
+ if [ -n "$BUF_ARCH" ]; then
22
+ BUF_URL="https://github.com/bufbuild/buf/releases/download/v${BUF_VERSION}/buf-Linux-${BUF_ARCH}"
23
+ curl -sSL "$BUF_URL" -o /tmp/buf
24
+ sudo install -m 755 /tmp/buf /usr/local/bin/buf
25
+ rm -f /tmp/buf
26
+ echo " ✅ buf installed: $(buf --version)"
27
+ fi
28
+
29
+ # Install grpcurl
30
+ echo "đŸ“Ļ Installing grpcurl..."
31
+ GRPCURL_VERSION="${GRPCURL_VERSION:-1.9.2}"
32
+
33
+ GRPCURL_ARCH="$(uname -m)"
34
+ case "$GRPCURL_ARCH" in
35
+ x86_64) GRPCURL_ARCH="x86_64" ;;
36
+ aarch64 | arm64) GRPCURL_ARCH="arm64" ;;
37
+ *) echo " âš ī¸ Unsupported architecture: $GRPCURL_ARCH, skipping grpcurl installation" ; GRPCURL_ARCH="" ;;
38
+ esac
39
+
40
+ if [ -n "$GRPCURL_ARCH" ]; then
41
+ GRPCURL_URL="https://github.com/fullstorydev/grpcurl/releases/download/v${GRPCURL_VERSION}/grpcurl_${GRPCURL_VERSION}_linux_${GRPCURL_ARCH}.tar.gz"
42
+ curl -sSL "$GRPCURL_URL" | sudo tar -xz -C /usr/local/bin grpcurl
43
+ echo " ✅ grpcurl installed: $(grpcurl --version 2>&1 | head -1)"
44
+ fi
45
+
46
+ echo ""
47
+ echo "✅ gRPC Tools setup complete"
48
+ echo ""
49
+ echo "💡 Quick start:"
50
+ echo " protoc --version # Protocol Buffers compiler"
51
+ echo " buf --version # Buf CLI (schema management)"
52
+ echo " grpcurl --version # gRPC curl"
53
+ echo ""
54
+ echo "📚 Resources:"
55
+ echo " https://protobuf.dev/ # Protocol Buffers documentation"
56
+ echo " https://buf.build/docs/ # Buf CLI documentation"
57
+ echo " https://github.com/fullstorydev/grpcurl # grpcurl documentation"
@@ -0,0 +1,47 @@
1
+ #!/bin/bash
2
+ # Verification script for gRPC Tools overlay
3
+ # Confirms protoc, buf, and grpcurl are installed
4
+
5
+ set -e
6
+
7
+ echo "🔍 Verifying gRPC Tools overlay..."
8
+ echo ""
9
+
10
+ ALL_CHECKS_PASSED=true
11
+
12
+ # Check protoc
13
+ echo "1ī¸âƒŖ Checking protoc (Protocol Buffers compiler)..."
14
+ if command -v protoc &> /dev/null; then
15
+ echo " ✅ protoc found: $(protoc --version)"
16
+ else
17
+ echo " ❌ protoc not found"
18
+ ALL_CHECKS_PASSED=false
19
+ fi
20
+
21
+ # Check buf
22
+ echo ""
23
+ echo "2ī¸âƒŖ Checking buf CLI..."
24
+ if command -v buf &> /dev/null; then
25
+ echo " ✅ buf found: $(buf --version)"
26
+ else
27
+ echo " ❌ buf not found"
28
+ ALL_CHECKS_PASSED=false
29
+ fi
30
+
31
+ # Check grpcurl
32
+ echo ""
33
+ echo "3ī¸âƒŖ Checking grpcurl..."
34
+ if command -v grpcurl &> /dev/null; then
35
+ echo " ✅ grpcurl found: $(grpcurl --version 2>&1 | head -1)"
36
+ else
37
+ echo " ❌ grpcurl not found"
38
+ ALL_CHECKS_PASSED=false
39
+ fi
40
+
41
+ echo ""
42
+ if [ "$ALL_CHECKS_PASSED" = true ]; then
43
+ echo "✅ gRPC Tools overlay verification complete"
44
+ else
45
+ echo "❌ Some gRPC tools are missing"
46
+ exit 1
47
+ fi
@@ -13,7 +13,20 @@ tags:
13
13
  - tracing
14
14
  - jaeger
15
15
  ports:
16
- - 16686
17
- - 14250
18
- - 14268
16
+ - port: 16686
17
+ service: jaeger
18
+ protocol: http
19
+ description: Jaeger UI
20
+ path: /
21
+ onAutoForward: openBrowser
22
+ - port: 14250
23
+ service: jaeger
24
+ protocol: grpc
25
+ description: Jaeger gRPC receiver
26
+ onAutoForward: ignore
27
+ - port: 14268
28
+ service: jaeger
29
+ protocol: http
30
+ description: Jaeger HTTP receiver
31
+ onAutoForward: ignore
19
32
  order: 1
@@ -0,0 +1,6 @@
1
+ # Jupyter Configuration
2
+ JUPYTER_VERSION=latest
3
+ JUPYTER_ENABLE_LAB=yes
4
+ JUPYTER_TOKEN=
5
+ JUPYTER_PORT=8888
6
+ JUPYTER_NOTEBOOKS_PATH=./notebooks
@@ -0,0 +1,210 @@
1
+ # Jupyter Overlay
2
+
3
+ Jupyter notebook server for interactive computing and data science.
4
+
5
+ ## Features
6
+
7
+ - **Jupyter Notebook/Lab** - Interactive computing environment
8
+ - **Python kernel** - Run Python code interactively
9
+ - **Persistent notebooks** - Work saved across container restarts
10
+ - **Volume mounting** - Access notebooks from host filesystem
11
+ - **No authentication** - Pre-configured for development use
12
+ - **Docker Compose service** - Runs as separate container
13
+
14
+ ## How It Works
15
+
16
+ This overlay adds Jupyter as a Docker Compose service running in its own container. Jupyter is accessible from your development container and your browser via port 8888.
17
+
18
+ **Dependencies:**
19
+
20
+ - `python` (required) - Python runtime for notebooks
21
+
22
+ **Architecture:**
23
+
24
+ - Jupyter service runs on port 8888
25
+ - Notebooks stored in Docker volume (`jupyter-data`)
26
+ - Optional local directory mounting for notebooks
27
+ - JupyterLab interface enabled by default
28
+
29
+ ## Configuration
30
+
31
+ ### Environment Variables
32
+
33
+ The overlay includes a `.env.example` file. Copy it to `.env` and customize:
34
+
35
+ ```bash
36
+ cd .devcontainer
37
+ cp .env.example .env
38
+ ```
39
+
40
+ **Default values (.env.example):**
41
+
42
+ ```bash
43
+ # Jupyter Configuration
44
+ JUPYTER_VERSION=latest
45
+ JUPYTER_ENABLE_LAB=yes
46
+ JUPYTER_TOKEN=
47
+ JUPYTER_PORT=8888
48
+ JUPYTER_NOTEBOOKS_PATH=./notebooks
49
+ ```
50
+
51
+ ### Notebook Directory
52
+
53
+ By default, notebooks can be created in the Jupyter container. To use notebooks from your host:
54
+
55
+ 1. Create a `notebooks` directory in your project root
56
+ 2. Notebooks in this directory will be available at `/home/jovyan/notebooks` in Jupyter
57
+
58
+ ### Authentication
59
+
60
+ By default, authentication is disabled for local development:
61
+
62
+ - No token required
63
+ - No password required
64
+
65
+ For production or shared environments, set `JUPYTER_TOKEN`:
66
+
67
+ ```bash
68
+ JUPYTER_TOKEN=your-secure-token
69
+ ```
70
+
71
+ ### Port Configuration
72
+
73
+ The default port (8888) can be changed via the `--port-offset` option:
74
+
75
+ ```bash
76
+ npm run init -- --port-offset 100 --stack compose --language python,jupyter
77
+ # Jupyter will be on port 8988
78
+ ```
79
+
80
+ ## Common Commands
81
+
82
+ ### Accessing Jupyter
83
+
84
+ ```bash
85
+ # Open in browser
86
+ http://localhost:8888
87
+
88
+ # Or use container hostname from dev container
89
+ curl http://jupyter:8888
90
+ ```
91
+
92
+ ### Notebook Management
93
+
94
+ Jupyter provides a web interface for all notebook operations:
95
+
96
+ - Create new notebooks
97
+ - Upload existing notebooks
98
+ - Download notebooks
99
+ - Organize in folders
100
+ - Run code cells
101
+ - Export to various formats (HTML, PDF, etc.)
102
+
103
+ ### Using Python in Notebooks
104
+
105
+ ```python
106
+ # Install packages
107
+ !pip install pandas numpy matplotlib seaborn
108
+
109
+ # Import and use
110
+ import pandas as pd
111
+ import numpy as np
112
+ import matplotlib.pyplot as plt
113
+
114
+ # Your analysis code
115
+ df = pd.read_csv('data.csv')
116
+ df.head()
117
+ ```
118
+
119
+ ### JupyterLab Features
120
+
121
+ JupyterLab is enabled by default and provides:
122
+
123
+ - Multiple tabs
124
+ - File browser
125
+ - Terminal
126
+ - Text editor
127
+ - Markdown preview
128
+ - Extension manager
129
+
130
+ ## Use Cases
131
+
132
+ - **Data analysis** - Explore and visualize datasets
133
+ - **Machine learning** - Develop and train models
134
+ - **Scientific computing** - Mathematical and statistical analysis
135
+ - **Documentation** - Create executable documentation
136
+ - **Teaching** - Interactive tutorials and examples
137
+ - **Prototyping** - Quick experimentation with code
138
+
139
+ **Integrates well with:**
140
+
141
+ - `python` - Python runtime (required)
142
+ - `postgres` - Database for data analysis
143
+ - `duckdb` - Analytics database
144
+ - `redis` - Caching and data structures
145
+
146
+ ## Available Images
147
+
148
+ Jupyter provides different base images:
149
+
150
+ - `jupyter/minimal-notebook` - Minimal Jupyter with Python (default)
151
+ - `jupyter/scipy-notebook` - Scientific Python stack
152
+ - `jupyter/datascience-notebook` - Julia, Python, R
153
+ - `jupyter/tensorflow-notebook` - TensorFlow and Keras
154
+ - `jupyter/pyspark-notebook` - PySpark
155
+
156
+ Change via `JUPYTER_VERSION`:
157
+
158
+ ```bash
159
+ JUPYTER_VERSION=scipy-notebook
160
+ ```
161
+
162
+ ## Troubleshooting
163
+
164
+ ### Jupyter Not Starting
165
+
166
+ Check service logs:
167
+
168
+ ```bash
169
+ docker-compose logs jupyter
170
+ ```
171
+
172
+ ### Port Already in Use
173
+
174
+ Change the port in `.env`:
175
+
176
+ ```bash
177
+ JUPYTER_PORT=8889
178
+ ```
179
+
180
+ Or use port offset when generating.
181
+
182
+ ### Notebooks Not Persisting
183
+
184
+ Ensure you're saving notebooks to the mounted volume or directory:
185
+
186
+ - `/home/jovyan/work` - Persistent volume
187
+ - `/home/jovyan/notebooks` - Mounted from host
188
+
189
+ ### Package Installation
190
+
191
+ Packages installed with `!pip install` are lost on container restart. To persist:
192
+
193
+ 1. Create a `requirements.txt` in your notebooks directory
194
+ 2. Install in a notebook: `!pip install -r /home/jovyan/notebooks/requirements.txt`
195
+
196
+ Or extend the Jupyter image with a custom Dockerfile.
197
+
198
+ ## References
199
+
200
+ - [Jupyter Documentation](https://jupyter.org/documentation)
201
+ - [JupyterLab Documentation](https://jupyterlab.readthedocs.io/)
202
+ - [Jupyter Docker Stacks](https://jupyter-docker-stacks.readthedocs.io/)
203
+ - [Jupyter Notebook Basics](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html)
204
+
205
+ **Related Overlays:**
206
+
207
+ - `python` - Python runtime (required)
208
+ - `postgres` - Database for analysis
209
+ - `duckdb` - Analytics database
210
+ - `redis` - Data structures
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "runServices": ["jupyter"],
4
+ "forwardPorts": [8888],
5
+ "portsAttributes": {
6
+ "8888": {
7
+ "label": "Jupyter Notebook",
8
+ "onAutoForward": "openBrowser"
9
+ }
10
+ },
11
+ "remoteEnv": {
12
+ "JUPYTER_URL": "http://jupyter:8888"
13
+ }
14
+ }
@@ -0,0 +1,23 @@
1
+ version: '3.8'
2
+
3
+ services:
4
+ jupyter:
5
+ image: jupyter/minimal-notebook:${JUPYTER_VERSION:-latest}
6
+ restart: unless-stopped
7
+ volumes:
8
+ - jupyter-data:/home/jovyan/work
9
+ - ${JUPYTER_NOTEBOOKS_PATH:-./notebooks}:/home/jovyan/notebooks
10
+ environment:
11
+ JUPYTER_ENABLE_LAB: ${JUPYTER_ENABLE_LAB:-yes}
12
+ JUPYTER_TOKEN: ${JUPYTER_TOKEN:-}
13
+ ports:
14
+ - '${JUPYTER_PORT:-8888}:8888'
15
+ networks:
16
+ - devnet
17
+ command: start-notebook.sh --NotebookApp.token='' --NotebookApp.password=''
18
+
19
+ volumes:
20
+ jupyter-data:
21
+
22
+ networks:
23
+ devnet:
@@ -0,0 +1,18 @@
1
+ id: jupyter
2
+ name: Jupyter
3
+ description: Jupyter notebook server for interactive computing and data science
4
+ category: language
5
+ supports:
6
+ - compose
7
+ requires:
8
+ - python
9
+ suggests: []
10
+ conflicts: []
11
+ tags:
12
+ - language
13
+ - jupyter
14
+ - python
15
+ - notebook
16
+ - data-science
17
+ ports:
18
+ - 8888
@@ -0,0 +1,35 @@
1
+ #!/bin/bash
2
+ # Verification script for Jupyter overlay
3
+ # Confirms Jupyter is running
4
+
5
+ set -e
6
+
7
+ echo "🔍 Verifying Jupyter overlay..."
8
+ echo ""
9
+
10
+ # Check if Jupyter service is running
11
+ echo "1ī¸âƒŖ Checking Jupyter service..."
12
+ if command -v curl &> /dev/null; then
13
+ # Wait up to 30 seconds for Jupyter to be ready
14
+ JUPYTER_READY=false
15
+ for i in {1..30}; do
16
+ if curl -s http://jupyter:8888 &> /dev/null; then
17
+ echo " ✅ Jupyter service is ready"
18
+ JUPYTER_READY=true
19
+ break
20
+ fi
21
+ sleep 1
22
+ done
23
+
24
+ if [ "$JUPYTER_READY" = false ]; then
25
+ echo " ❌ Jupyter service not ready after 30 seconds"
26
+ exit 1
27
+ fi
28
+ else
29
+ echo " âš ī¸ curl not found, skipping service check"
30
+ fi
31
+
32
+ echo ""
33
+ echo "✅ Jupyter overlay verification complete"
34
+ echo ""
35
+ echo "â„šī¸ Access Jupyter at http://localhost:8888"
@@ -0,0 +1,5 @@
1
+ # Keycloak Configuration
2
+ KEYCLOAK_VERSION=26.0
3
+ KEYCLOAK_PORT=8180
4
+ KEYCLOAK_ADMIN=admin
5
+ KEYCLOAK_ADMIN_PASSWORD=admin