Learn how separate app pieces talk to each other without being bundled together
Practice running multiple services at once using Docker Compose with a single command
Experiment with scaling an app across many machines using Docker Swarm or Kubernetes
Use as a hands-on template to understand queues, workers, and databases working together
Run the whole app with one command using Docker Compose. Docker must be installed first. Swarm and Kubernetes options are available for multi-machine setups.
This repository is a sample voting application built to demonstrate how multiple software components can work together as separate containers on one machine or spread across many machines. It is maintained by the Docker team as a teaching tool, not as a production-quality system, so expect simplicity over polish. The app itself is straightforward: a web page lets users pick between two options, their votes are collected in a fast in-memory store called Redis, a background worker reads those votes and saves them into a database (Postgres), and a second web page shows the live results. Five pieces of software, five different technologies (Python, Node.js.NET, Redis, Postgres), all running side by side. You can start the whole thing with a single command using Docker Compose, which reads a configuration file and spins up every piece automatically. If you want to run it across multiple machines instead of one, Docker Swarm and Kubernetes are also supported, each with their own short setup steps described in the README. The main purpose of the project is educational. It shows beginners how a real-world distributed system is structured: a front-end service, a message queue, a worker process, a database, and a reporting layer. Each piece communicates with the others without being bundled together, which is a common pattern in modern software. One thing the README notes explicitly: the app limits each browser to one vote and is not meant to be a blueprint for a properly architected system. It is a learning example, kept intentionally simple so the moving parts stay visible.
← dockersamples on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.