Landing page for the Dev Container Templates collection at ghcr.io/doughatcher/devcontainer-templates. Each template lives in its own working repository where it's actively used, and publishes itself to this shared OCI namespace on tagged releases.
| Template | Working Repo | OCI Reference | Status |
|---|---|---|---|
magento — Magento Open Source 2.x |
doughatcher/magento | ghcr.io/doughatcher/devcontainer-templates/magento |
✅ Published |
aem-app-builder — Adobe AEM with App Builder |
planned | tbd | 🔜 Planned |
aem-eds — Adobe AEM Edge Delivery Services |
planned | tbd | 🔜 Planned |
devcontainer templates apply \
--template-id ghcr.io/doughatcher/devcontainer-templates/magento \
--workspace-folder ./my-projectOr in VS Code: Dev Containers: Add Dev Container Configuration Files… → From a predefined Dev Container Template… and pick from the registry.
Each template is published from its own working repository — the same repo where the dev container is exercised continuously. There's no separate "template source" tree to keep in sync. The publishing flow:
- The working repo (e.g.,
doughatcher/magento) keeps its.devcontainer/runnable with hardcoded values (php8.3, etc.). - A
.template/build.shscript in that repo copies the live tree into a scratch dir and lifts hardcoded values into${templateOption:*}markers. - A
.github/workflows/publish-template.ymlworkflow, triggered ontemplate-v*tags, runs the build script and publishes viadevcontainer templates publishtoghcr.io/doughatcher/devcontainer-templates/<id>.
What each working repo's .template/ directory contains:
.template/
├── devcontainer-template.json # template manifest (id, version, options)
├── NOTES.md # extended docs (rendered into README at build time)
└── build.sh # working-tree → publishable artifact
This repository (doughatcher/devcontainer-templates) is just a landing page. It owns the OCI namespace's collection metadata and lists the available templates. It does not contain template source.
Have a project that should be a template here? Open an issue. The pattern is:
- Your working repo gets a
.template/directory + apublish-template.ymlworkflow. - Workflow publishes to
ghcr.io/doughatcher/devcontainer-templates/<your-id>. - Add a row to the table above so
devcontainer templates applyusers can find it.
- Dev Container spec — Templates
devcontainers/templates— the official template index- This collection's official-index registration PR