Create Multi-Service App
Using Docker's Distributed Voting App
1 volume, 2 networks, and 5 services needed
Create the commands needed, spin up services, and test app
Everything is using Docker Hub images, so no data needed on Swarm
Like many computer things, this is 1/2 art form and 1/2 sience

Goal: create networks, volumes, and services for a web-based "cats vs. dogs" voting app.
See architecture above for a basic diagram of how the 5 services will work
All images are on Docker Hub, so you should use editor to craft your commands locally, then paste them into swarm shell (at least that's how I'd do it)
a
backend
andfrontend
overlay network are needed. Nothing different about them other then that backend will help protect datatbase from the voting web app. (similar to how a VLAN setup might be in traditional archecture)The database server should use a named volume for perserving data. Use the new
--mount
format to do this:--mount type=volume,source=db-data,target=/var/lib/postgresql/data
Services (names below should be service names)
vote
dockersamples/examplevotingapp_vote:before
web front end for users to vote dog/cat
ideally published on TCP 80. Container listens on 80
on frontend network
2+ replicas of this container
redis
redis:3.2
key/value storage for incoming votes
no public ports
on frontend network
2 replicas
worker
dockersamples/examplevotingapp_worker
backend processor of redis and storing results in postgres
no public ports
on frontend and backend networks
1 replica
db
postgres:9.4
one named volume needed, pointing to /var/lib/postgresql/data
on backend network
1 replica
result
dockersamples/examplevotingapp_result:before
web app that shows results
runs on high port since just for admins (lets imagine)
so run on a high port of your choosing (I choose 5001), container listens on 80
on backend network
1 replica
Last updated
Was this helpful?