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,9 @@
1
+ # MongoDB Configuration
2
+ MONGODB_VERSION=8
3
+ MONGODB_USER=root
4
+ MONGODB_PASSWORD=example
5
+ MONGODB_PORT=27017
6
+
7
+ # Mongo Express Configuration
8
+ MONGO_EXPRESS_VERSION=latest
9
+ MONGO_EXPRESS_PORT=8081
@@ -0,0 +1,481 @@
1
+ # MongoDB Overlay
2
+
3
+ MongoDB document database with Mongo Express web UI for development and testing.
4
+
5
+ ## Features
6
+
7
+ - **MongoDB 8** - Latest stable version with modern document store features
8
+ - **Mongo Express** - Web-based MongoDB admin interface (port 8081)
9
+ - **mongosh** - Modern MongoDB Shell for database operations
10
+ - **Docker Compose services** - Runs as separate containers
11
+ - **Persistent storage** - Data and config survive container restarts
12
+ - **Health checks** - Ensures services are ready before use
13
+ - **VS Code Extension:** MongoDB for VS Code (mongodb.mongodb-vscode)
14
+
15
+ ## How It Works
16
+
17
+ This overlay adds MongoDB 8 and Mongo Express as separate Docker Compose services. The database runs in its own container and is accessible from your development container via the hostname `mongodb`.
18
+
19
+ **Architecture:**
20
+
21
+ ```mermaid
22
+ graph TD
23
+ A[Development Container<br/>Your application code<br/>mongosh client<br/>Connects to mongodb:27017] -->|Docker network devnet| B[MongoDB Container<br/>MongoDB 8 server<br/>Port 27017<br/>Data volumes]
24
+ B --> C[Mongo Express Container<br/>Web UI on port 8081<br/>Connected to MongoDB]
25
+ ```
26
+
27
+ ## Configuration
28
+
29
+ ### Environment Variables
30
+
31
+ The overlay includes a `.env.example` file. Copy it to `.env` and customize:
32
+
33
+ ```bash
34
+ cd .devcontainer
35
+ cp .env.example .env
36
+ ```
37
+
38
+ **Default values (.env.example):**
39
+
40
+ ```bash
41
+ # MongoDB Configuration
42
+ MONGODB_VERSION=8
43
+ MONGODB_USER=root
44
+ MONGODB_PASSWORD=example
45
+ MONGODB_PORT=27017
46
+
47
+ # Mongo Express Configuration
48
+ MONGO_EXPRESS_VERSION=latest
49
+ MONGO_EXPRESS_PORT=8081
50
+ ```
51
+
52
+ ⚠️ **SECURITY:** Change the default password for production use. The `.env` file is git-ignored.
53
+
54
+ ### Port Configuration
55
+
56
+ Default ports can be changed via the `--port-offset` option when initializing:
57
+
58
+ ```bash
59
+ # Offset all ports by 100
60
+ container-superposition --port-offset 100
61
+
62
+ # MongoDB will be on 27117, Mongo Express on 8181
63
+ ```
64
+
65
+ ## Connection Information
66
+
67
+ ### From Development Container
68
+
69
+ ```bash
70
+ # Hostname: mongodb (Docker Compose service name)
71
+ # Port: 27017
72
+ # Username: root (or value from .env)
73
+ # Password: example (or value from .env)
74
+
75
+ # Connection string
76
+ mongodb://root:example@mongodb:27017/
77
+ ```
78
+
79
+ ### From Host Machine
80
+
81
+ ```bash
82
+ # Hostname: localhost
83
+ # Port: 27017 (or 27017 + port-offset)
84
+ # Username: root
85
+ # Password: example
86
+
87
+ # Connection string
88
+ mongodb://root:example@localhost:27017/
89
+ ```
90
+
91
+ ### Mongo Express Web UI
92
+
93
+ Access the web interface from your host machine:
94
+
95
+ ```
96
+ http://localhost:8081
97
+ ```
98
+
99
+ (or port 8081 + port-offset if using offset)
100
+
101
+ ## Common Commands
102
+
103
+ ### Using mongosh (MongoDB Shell)
104
+
105
+ ```bash
106
+ # Connect to MongoDB
107
+ mongosh --host mongodb --port 27017 -u root -p example
108
+
109
+ # Or with connection string
110
+ mongosh "mongodb://root:example@mongodb:27017/"
111
+
112
+ # Connect to specific database
113
+ mongosh "mongodb://root:example@mongodb:27017/myapp"
114
+
115
+ # Run command directly
116
+ mongosh --host mongodb -u root -p example --eval "db.version()"
117
+ ```
118
+
119
+ ### Database Operations
120
+
121
+ ```bash
122
+ # Show databases
123
+ mongosh mongodb://root:example@mongodb:27017/ --eval "show dbs"
124
+
125
+ # Create/use database
126
+ mongosh mongodb://root:example@mongodb:27017/ --eval "use myapp"
127
+
128
+ # Show collections
129
+ mongosh mongodb://root:example@mongodb:27017/myapp --eval "show collections"
130
+
131
+ # Insert document
132
+ mongosh mongodb://root:example@mongodb:27017/myapp --eval 'db.users.insertOne({name: "Alice", email: "alice@example.com"})'
133
+
134
+ # Query documents
135
+ mongosh mongodb://root:example@mongodb:27017/myapp --eval 'db.users.find()'
136
+
137
+ # Drop database
138
+ mongosh mongodb://root:example@mongodb:27017/ --eval "db.dropDatabase()"
139
+ ```
140
+
141
+ ### Container Management
142
+
143
+ ```bash
144
+ # Check service status
145
+ docker-compose ps
146
+
147
+ # View MongoDB logs
148
+ docker-compose logs -f mongodb
149
+
150
+ # View Mongo Express logs
151
+ docker-compose logs -f mongo-express
152
+
153
+ # Restart services
154
+ docker-compose restart mongodb mongo-express
155
+
156
+ # Stop services
157
+ docker-compose stop mongodb mongo-express
158
+
159
+ # Remove data (WARNING: destroys all data)
160
+ docker-compose down -v
161
+ ```
162
+
163
+ ## Application Integration
164
+
165
+ ### Node.js
166
+
167
+ ```bash
168
+ # Install MongoDB driver
169
+ npm install mongodb
170
+
171
+ # Or use Mongoose ODM
172
+ npm install mongoose
173
+ ```
174
+
175
+ ```javascript
176
+ // Using native MongoDB driver
177
+ const { MongoClient } = require('mongodb');
178
+
179
+ const url = 'mongodb://root:example@mongodb:27017/';
180
+ const client = new MongoClient(url);
181
+
182
+ async function main() {
183
+ await client.connect();
184
+ const db = client.db('myapp');
185
+ const collection = db.collection('users');
186
+
187
+ // Insert
188
+ await collection.insertOne({ name: 'Alice', email: 'alice@example.com' });
189
+
190
+ // Find
191
+ const users = await collection.find({}).toArray();
192
+ console.log(users);
193
+
194
+ await client.close();
195
+ }
196
+
197
+ main();
198
+ ```
199
+
200
+ ```javascript
201
+ // Using Mongoose
202
+ const mongoose = require('mongoose');
203
+
204
+ mongoose.connect('mongodb://root:example@mongodb:27017/myapp');
205
+
206
+ const UserSchema = new mongoose.Schema({
207
+ name: String,
208
+ email: String,
209
+ });
210
+
211
+ const User = mongoose.model('User', UserSchema);
212
+
213
+ // Create
214
+ const user = new User({ name: 'Alice', email: 'alice@example.com' });
215
+ await user.save();
216
+
217
+ // Find
218
+ const users = await User.find();
219
+ ```
220
+
221
+ ### Python
222
+
223
+ ```bash
224
+ # Install PyMongo driver
225
+ pip install pymongo
226
+ ```
227
+
228
+ ```python
229
+ from pymongo import MongoClient
230
+
231
+ # Connect
232
+ client = MongoClient('mongodb://root:example@mongodb:27017/')
233
+ db = client.myapp
234
+ collection = db.users
235
+
236
+ # Insert
237
+ collection.insert_one({'name': 'Alice', 'email': 'alice@example.com'})
238
+
239
+ # Find
240
+ users = collection.find()
241
+ for user in users:
242
+ print(user)
243
+
244
+ # Close
245
+ client.close()
246
+ ```
247
+
248
+ ### .NET
249
+
250
+ ```bash
251
+ # Install MongoDB driver
252
+ dotnet add package MongoDB.Driver
253
+ ```
254
+
255
+ ```csharp
256
+ using MongoDB.Driver;
257
+ using MongoDB.Bson;
258
+
259
+ var client = new MongoClient("mongodb://root:example@mongodb:27017/");
260
+ var database = client.GetDatabase("myapp");
261
+ var collection = database.GetCollection<BsonDocument>("users");
262
+
263
+ // Insert
264
+ var document = new BsonDocument
265
+ {
266
+ { "name", "Alice" },
267
+ { "email", "alice@example.com" }
268
+ };
269
+ await collection.InsertOneAsync(document);
270
+
271
+ // Find
272
+ var users = await collection.Find(new BsonDocument()).ToListAsync();
273
+ ```
274
+
275
+ ### Go
276
+
277
+ ```bash
278
+ # Install MongoDB driver
279
+ go get go.mongodb.org/mongo-driver/mongo
280
+ ```
281
+
282
+ ```go
283
+ package main
284
+
285
+ import (
286
+ "context"
287
+ "go.mongodb.org/mongo-driver/bson"
288
+ "go.mongodb.org/mongo-driver/mongo"
289
+ "go.mongodb.org/mongo-driver/mongo/options"
290
+ )
291
+
292
+ func main() {
293
+ ctx := context.Background()
294
+
295
+ client, _ := mongo.Connect(ctx, options.Client().
296
+ ApplyURI("mongodb://root:example@mongodb:27017/"))
297
+ defer client.Disconnect(ctx)
298
+
299
+ collection := client.Database("myapp").Collection("users")
300
+
301
+ // Insert
302
+ collection.InsertOne(ctx, bson.M{
303
+ "name": "Alice",
304
+ "email": "alice@example.com",
305
+ })
306
+
307
+ // Find
308
+ cursor, _ := collection.Find(ctx, bson.M{})
309
+ defer cursor.Close(ctx)
310
+
311
+ for cursor.Next(ctx) {
312
+ var result bson.M
313
+ cursor.Decode(&result)
314
+ println(result)
315
+ }
316
+ }
317
+ ```
318
+
319
+ ## Use Cases
320
+
321
+ - **Document-oriented applications** - JSON-based data with flexible schemas
322
+ - **Node.js/Python backends** - Native JSON support, popular in MEAN/MERN stacks
323
+ - **Rapid prototyping** - No rigid schema required, fast iteration
324
+ - **Real-time applications** - Change streams for reactive updates
325
+ - **Content management** - Flexible document structure for CMS
326
+ - **Catalog/inventory systems** - Nested data and arrays
327
+
328
+ **Integrates well with:**
329
+
330
+ - Node.js, Python, .NET, Go (application development)
331
+ - Grafana (database metrics visualization)
332
+ - OTEL Collector (query performance monitoring)
333
+
334
+ ## Troubleshooting
335
+
336
+ ### Issue: Cannot connect to MongoDB
337
+
338
+ **Symptoms:**
339
+
340
+ - Connection refused errors
341
+ - Timeout when connecting
342
+
343
+ **Solution:**
344
+
345
+ ```bash
346
+ # Check if service is running
347
+ docker-compose ps
348
+
349
+ # Check MongoDB logs
350
+ docker-compose logs mongodb
351
+
352
+ # Wait for health check to pass
353
+ docker-compose ps | grep mongodb
354
+ # Look for "healthy" status
355
+
356
+ # Test connection
357
+ mongosh --host mongodb --port 27017 -u root -p example --eval "db.adminCommand('ping')"
358
+ ```
359
+
360
+ ### Issue: Authentication failed
361
+
362
+ **Symptoms:**
363
+
364
+ - "Authentication failed" error
365
+ - Invalid credentials
366
+
367
+ **Solution:**
368
+
369
+ ```bash
370
+ # Verify credentials in .env file
371
+ cat .devcontainer/.env
372
+
373
+ # Ensure credentials match in connection string
374
+ # mongodb://USERNAME:PASSWORD@mongodb:27017/
375
+
376
+ # If changing credentials, recreate containers
377
+ docker-compose down -v
378
+ docker-compose up -d
379
+ ```
380
+
381
+ ### Issue: Mongo Express not accessible
382
+
383
+ **Symptoms:**
384
+
385
+ - Cannot access http://localhost:8081
386
+ - Page not loading
387
+
388
+ **Solution:**
389
+
390
+ ```bash
391
+ # Check Mongo Express logs
392
+ docker-compose logs mongo-express
393
+
394
+ # Verify MongoDB is healthy first
395
+ docker-compose ps mongodb
396
+
397
+ # Restart Mongo Express
398
+ docker-compose restart mongo-express
399
+
400
+ # Check port forwarding in VS Code
401
+ # Dev Containers: Forward Ports... (port 8081)
402
+ ```
403
+
404
+ ### Issue: Data not persisting
405
+
406
+ **Symptoms:**
407
+
408
+ - Data lost after container restart
409
+
410
+ **Solution:**
411
+
412
+ ```bash
413
+ # Verify volumes exist
414
+ docker volume ls | grep mongodb
415
+
416
+ # Check volume mounts in docker-compose.yml
417
+ docker-compose config
418
+
419
+ # Don't use 'docker-compose down -v' unless you want to delete data
420
+ # Use 'docker-compose down' or 'docker-compose stop' instead
421
+ ```
422
+
423
+ ## Security Considerations
424
+
425
+ ⚠️ **Development-only defaults:**
426
+
427
+ - Default credentials (`root/example`) are intentionally weak for development
428
+ - Mongo Express has authentication disabled (`ME_CONFIG_BASICAUTH: false`)
429
+ - MongoDB is exposed on host port (accessible from host machine)
430
+
431
+ **For production:**
432
+
433
+ 1. **Change credentials:**
434
+
435
+ ```bash
436
+ # Use strong passwords
437
+ MONGODB_PASSWORD=<strong-password>
438
+ ```
439
+
440
+ 2. **Enable Mongo Express authentication:**
441
+
442
+ ```yaml
443
+ # In docker-compose.yml
444
+ ME_CONFIG_BASICAUTH: true
445
+ ME_CONFIG_BASICAUTH_USERNAME: admin
446
+ ME_CONFIG_BASICAUTH_PASSWORD: <strong-password>
447
+ ```
448
+
449
+ 3. **Restrict network access:**
450
+ - Don't expose ports publicly
451
+ - Use firewall rules
452
+ - Consider TLS/SSL for connections
453
+
454
+ 4. **Use authentication databases:**
455
+ ```bash
456
+ mongosh "mongodb://user:password@mongodb:27017/myapp?authSource=admin"
457
+ ```
458
+
459
+ ## Related Overlays
460
+
461
+ - **nodejs** - Node.js with native MongoDB support via drivers
462
+ - **python** - Python with PyMongo driver
463
+ - **dotnet** - .NET with MongoDB.Driver
464
+ - **grafana** - Visualize MongoDB metrics
465
+ - **otel-collector** - Monitor MongoDB query performance
466
+
467
+ ## Additional Resources
468
+
469
+ - [Official MongoDB Documentation](https://www.mongodb.com/docs/)
470
+ - [MongoDB Shell (mongosh)](https://www.mongodb.com/docs/mongodb-shell/)
471
+ - [Mongo Express](https://github.com/mongo-express/mongo-express)
472
+ - [MongoDB Docker Image](https://hub.docker.com/_/mongo)
473
+ - [MongoDB Drivers](https://www.mongodb.com/docs/drivers/)
474
+
475
+ ## Notes
476
+
477
+ - MongoDB uses the hostname `mongodb` (the service name) for container-to-container communication
478
+ - Data is persisted in Docker volumes (`mongodb-data` and `mongodb-config`)
479
+ - Mongo Express provides a convenient web UI for database management and debugging
480
+ - Default configuration uses MongoDB 8 which includes the latest features and performance improvements
481
+ - Health checks ensure MongoDB is ready before Mongo Express starts
@@ -0,0 +1,32 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "./features/cross-distro-packages": {
5
+ "apt": "mongodb-mongosh",
6
+ "apk": "mongodb-tools"
7
+ }
8
+ },
9
+ "customizations": {
10
+ "vscode": {
11
+ "extensions": ["mongodb.mongodb-vscode"]
12
+ }
13
+ },
14
+ "runServices": ["mongodb", "mongo-express"],
15
+ "forwardPorts": [27017, 8081],
16
+ "portsAttributes": {
17
+ "27017": {
18
+ "label": "MongoDB",
19
+ "onAutoForward": "notify"
20
+ },
21
+ "8081": {
22
+ "label": "Mongo Express",
23
+ "onAutoForward": "openBrowser"
24
+ }
25
+ },
26
+ "remoteEnv": {
27
+ "MONGODB_HOST": "mongodb",
28
+ "MONGODB_PORT": "27017",
29
+ "MONGODB_USER": "root",
30
+ "MONGODB_PASSWORD": "example"
31
+ }
32
+ }
@@ -0,0 +1,44 @@
1
+ version: '3.8'
2
+
3
+ services:
4
+ mongodb:
5
+ image: mongo:${MONGODB_VERSION:-8}
6
+ restart: unless-stopped
7
+ volumes:
8
+ - mongodb-data:/data/db
9
+ - mongodb-config:/data/configdb
10
+ environment:
11
+ MONGO_INITDB_ROOT_USERNAME: ${MONGODB_USER:-root}
12
+ MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD:-example}
13
+ ports:
14
+ - '${MONGODB_PORT:-27017}:27017'
15
+ networks:
16
+ - devnet
17
+ healthcheck:
18
+ test: ['CMD', 'mongosh', '--eval', "db.adminCommand('ping')"]
19
+ interval: 10s
20
+ timeout: 5s
21
+ retries: 5
22
+
23
+ mongo-express:
24
+ image: mongo-express:${MONGO_EXPRESS_VERSION:-latest}
25
+ restart: unless-stopped
26
+ environment:
27
+ ME_CONFIG_MONGODB_ADMINUSERNAME: ${MONGODB_USER:-root}
28
+ ME_CONFIG_MONGODB_ADMINPASSWORD: ${MONGODB_PASSWORD:-example}
29
+ ME_CONFIG_MONGODB_URL: mongodb://${MONGODB_USER:-root}:${MONGODB_PASSWORD:-example}@mongodb:27017/
30
+ ME_CONFIG_BASICAUTH: false
31
+ ports:
32
+ - '${MONGO_EXPRESS_PORT:-8081}:8081'
33
+ networks:
34
+ - devnet
35
+ depends_on:
36
+ mongodb:
37
+ condition: service_healthy
38
+
39
+ volumes:
40
+ mongodb-data:
41
+ mongodb-config:
42
+
43
+ networks:
44
+ devnet:
@@ -0,0 +1,17 @@
1
+ id: mongodb
2
+ name: MongoDB
3
+ description: MongoDB 8 with Mongo Express web UI
4
+ category: database
5
+ supports:
6
+ - compose
7
+ requires: []
8
+ suggests: []
9
+ conflicts: []
10
+ tags:
11
+ - database
12
+ - nosql
13
+ - mongodb
14
+ - document
15
+ ports:
16
+ - 27017
17
+ - 8081
@@ -0,0 +1,48 @@
1
+ #!/bin/bash
2
+ # Verification script for MongoDB overlay
3
+ # Confirms MongoDB client and services are accessible
4
+
5
+ set -e
6
+
7
+ echo "🔍 Verifying MongoDB overlay..."
8
+ echo ""
9
+
10
+ # Check mongosh is installed
11
+ echo "1️⃣ Checking mongosh client..."
12
+ if command -v mongosh &> /dev/null; then
13
+ mongosh --version
14
+ echo " ✅ mongosh client found"
15
+ else
16
+ echo " ❌ mongosh client not found"
17
+ exit 1
18
+ fi
19
+
20
+ # Check if MongoDB service is running
21
+ echo ""
22
+ echo "2️⃣ Checking MongoDB service..."
23
+ MONGODB_READY=false
24
+ for i in {1..15}; do
25
+ if mongosh --host mongodb --port 27017 -u root -p example --eval "db.adminCommand('ping')" &> /dev/null; then
26
+ echo " ✅ MongoDB service is ready"
27
+ MONGODB_READY=true
28
+ break
29
+ fi
30
+ sleep 1
31
+ done
32
+
33
+ if [ "$MONGODB_READY" = false ]; then
34
+ echo " ❌ MongoDB service not ready after 15 seconds"
35
+ exit 1
36
+ fi
37
+
38
+ # Check Mongo Express
39
+ echo ""
40
+ echo "3️⃣ Checking Mongo Express web UI..."
41
+ if curl -s -o /dev/null -w "%{http_code}" http://mongo-express:8081 | grep -q "200"; then
42
+ echo " ✅ Mongo Express is accessible"
43
+ else
44
+ echo " ⚠️ Mongo Express may still be starting up"
45
+ fi
46
+
47
+ echo ""
48
+ echo "✅ MongoDB overlay verification complete"
@@ -0,0 +1,11 @@
1
+ # MySQL Configuration
2
+ MYSQL_VERSION=8
3
+ MYSQL_ROOT_PASSWORD=rootpassword
4
+ MYSQL_DATABASE=devdb
5
+ MYSQL_USER=devuser
6
+ MYSQL_PASSWORD=devpassword
7
+ MYSQL_PORT=3306
8
+
9
+ # phpMyAdmin Configuration
10
+ PHPMYADMIN_VERSION=latest
11
+ PHPMYADMIN_PORT=8080