| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Learn Docker by doing — in a real terminal, in your browser.
DockerMissions is a fully local, browser-based training game for Docker. Each mission gives you a live shell, a clear objective, and automatic validation. No cloud. No costs. No copy-pasting from a blog post.
54 progressive challenges across 8 modules — complete beginner to production patterns.
Design and implementation by: Fatemeh
git clone <repo-url>
cd dockermissions
# Install dependencies
cd backend && npm install && cd ..
cd frontend && npm install && cd ..
# Generate mission data
node scripts/generate-missions.mjs
# Start both services
./start.shOpen http://localhost:5173, enter a player name, and pick your first mission.
| Tool | Version | Notes |
|---|---|---|
| Node.js | 18+ | Required for backend and frontend |
| Docker | 24+ | Must be running for live validation |
| npm | 9+ | Included with Node.js |
| # | Module | Levels | XP | Difficulty | Key Topics |
|---|---|---|---|---|---|
| 1 | 🟢 Docker Basics | 8 | 450 | Beginner | docker run, ports, env vars, exec, logs |
| 2 | 🟢 Images & Dockerfile | 8 | 650 | Beginner | FROM, RUN, COPY, multi-stage, .dockerignore |
| 3 | 🟡 Networking | 7 | 600 | Intermediate | Bridge, custom networks, DNS, host, none |
| 4 | 🟡 Volumes & Storage | 6 | 500 | Intermediate | Named volumes, bind mounts, tmpfs, backups |
| 5 | 🟡 Docker Compose | 7 | 600 | Intermediate | Multi-service stacks, health checks, scaling |
| 6 | 🔴 Security | 6 | 750 | Advanced | Non-root, read-only rootfs, capabilities, seccomp |
| 7 | 🔴 Registry & Distribution | 5 | 450 | Advanced | Tagging, local registry, push/pull, layer history |
| 8 | ⚫ Advanced Docker | 7 | 1000 | Expert | BuildKit, Swarm, contexts, cache mounts, prune |
When validation fails, DockerMissions analyses the commands you typed and flags common mistakes:
Command issue detected: Flags after the image name are passed to the container, not Docker. You wrote: docker run -d nginx --name webserver Move --name before the image name. Example: docker run -d --name webserver nginx
Detected patterns include:
| Script | What it does |
|---|---|
| ./start.sh | Start backend + frontend in the background |
| ./stop.sh | Stop both services |
| ./restart.sh | Stop then start |
Logs go to tmp/logs/backend.log and tmp/logs/frontend.log.
dockermissions/ ├── start.sh / stop.sh / restart.sh ← service management ├── backend/ │ ├── missions/data/ ← generated mission JSON (54 levels) │ └── src/ │ ├── data/ ← offline player progress (JSON on disk) │ ├── missions/ ← mission loader and parser │ ├── sandbox/ ← session and workspace lifecycle │ ├── terminal/ ← WebSocket PTY relay (node-pty) │ ├── validation/ ← mission validation + error analysis │ └── routes/ ← Express API routes ├── frontend/ │ └── src/ │ ├── components/ ← UI components (terminal, briefing, hints…) │ ├── api/ ← typed API clients │ ├── pages/ ← MissionPage layout │ ├── store/ ← Zustand game state │ └── styles/ ← global CSS (dark terminal theme) ├── docker/ │ └── sandbox/ ← sandbox Dockerfile ├── modules/ ← source-of-truth mission specs (Markdown) │ ├── module_01_basics.md │ ├── module_02_images_dockerfile.md │ ├── module_03_networking.md │ ├── module_04_volumes_storage.md │ ├── module_05_docker_compose.md │ ├── module_06_security.md │ ├── module_07_registry.md │ └── module_08_advanced.md ├── scripts/ │ └── generate-missions.mjs ← parse modules/ → backend/missions/data/ ├── GAME_PLAN.md ← full design document └── AI_IMPLEMENTATION_PROMPT.md ← implementation spec for AI assistants
After editing any file in modules/, regenerate the mission JSON:
node scripts/generate-missions.mjsThen restart the backend to pick up the changes.
To add or change missions:
To change validation logic:
To report a bug or suggest a new mission:
If DockerMissions helped you learn Docker:
MIT License.
| Back | FazBrowse Home | New Git URL |