Pronounced like Dreamer (dree·mr)
Docker
Rust
Mongo
React
If you are viewing this project on GitHub, select the "Use this Template" button.
Once you've cloned your new project locally, you can use make
to start up your project
Command | Description |
---|---|
make up |
Will start the docker compose environment, mapping port 80 to your localhost under the www.drmr.localhost domain. |
make down |
Will tear down your docker compose environment. |
make clean |
Will remove containers and clean up Docker volumes. Implies make down . |
You can visit http://www.drmr.localhost/ once you've started your stack and you'll be greeted by React running in development mode behind Traefik. Traefik also binds the backend to http://www.drmr.localhost/api. You can make rest calls to your same host (no need to change port.
You can view the Traefik Dashboard by browsing to http://localhost:8080.
One of the things I do in my personal workflow is take a Docker-first approach. I like consistency when I jump between machines so I don't have to think about my different configurations.
One thing I found, talking to one of my peers, is that they perfer the quickest and dirtiest path forward when working on a proof of concept.
There the most commonly known stacks such as:
Acronym | Components |
---|---|
LAMP |
|
MEAN |
|
MERN |
|
WISA |
|
LAMP and WISA are both tied to a specific operating system as well as a specific serving option. In the MEAN and MERN solution, your operating system is agnostic, but both your backend and serving option are Express, which are both dependant on Node.
DRMR is a different approach. By using Docker, you don't need to care about the operating system or serving option. I picked Rust arbitrarily to help build the acronym. You could just as easily replace it with Go, Express, Python or anything else. Same thing with Mongo, you could easily replace this with MySQL or Postgres as long as you build with Domain Driven Design this is an arbitrary component as well.
You're not even tied to Docker. You could use
This is ultimately the point. To have a template that you can start with that is just as general and agnoistic as the cloud-platform you'll probably want to deploy to eventually without tying your hands early on.