A platform-agnostic, reproducible DevContainer environment designed for stability, portability, and developer experience.
This repo serves as a documentation hub for the project β architecture diagram + build rationale β with the implementation stored in a private repository.
I set out to build a reliable, reproducible DevContainer lab to support my DevOps, DevSecOps, and Platform Engineering learning journey.
Along the way, I encountered:
- π ARM architecture mirror failures
- π Inconsistent
apt-getpackage installs - π Cross-platform (x86 vs ARM) Docker build issues
- π VS Code DevContainer attachment quirks
Instead of patching individual failures, I paused and asked:
π§ How do I design a stable platform? π§ How do I ensure this works across multiple developer machines? π§ How do I build once, and reuse everywhere?
This mindset shift led to:
β
Swapping to a Microsoft DevContainer base image for ARM stability
β
Stripping fragile dependencies from Dockerfile
β
Validating reproducibility across 2 laptop's (both M1 ARM)
β
Version-controlling a clean baseline in a private repo
β
Creating this architecture documentation for future maintainers
Key flow:
- Clone repo β local project folder
- Bind mount β
/workspaceinside DevContainer runtime - Docker Engine runs DevContainer image
- VS Code β DevContainers extension β remote attach β running container
- VS Code + DevContainers Extension
- Docker Engine
- DevContainer Image:
mcr.microsoft.com/devcontainers/base:ubuntu-22.04 - Portable developer workstation
- GitHub (private implementation repo)
The implementation (Dockerfile, .devcontainer configs, etc.) is stored in a private repo.
This repo intentionally contains only documentation and architecture artifacts.
Thanks to the open source DevContainers, Docker, and VS Code communities for enabling portable developer environments.
