Basic To Do application demonstrating the microservice architecture by deploying the frontend, the backend, the database, and cache all as its own service while providing an Nginx proxy-server as a defualt gateway to the app.
The client first communicates with the Nginx proxy server to get initial single page data. The proxy-server acts as an CDN.
Then the app starts fetching data from the backend (express app)
The backend uses MongoDB as a permanent store. data are persisted locally using docker volumes. Redis DB is used for caching.
The containers use the default network bridge for communication with DNS lookups provided by Docker.
BusyBox is provided as a service to debug the network of the containers internally.
docker compose -f ./docker-compose.dev.yml up
To-Do-Microservices
├── todo-frontend frontend-app
├── todo-backend backend server contsaing express, Mongo, Redis
├── utils Databases configurations
├── mongo Mongo DB - NoSQL for simplicity
├── redis Redis DB - used for caching
├── .gitignore ignoreing data volumes from VCS
├── docker-compose.dev.yml development deployment composer file
├── nginx.dev.conf Nginx configuration for development deployment
└── README.md main documentation