I build a lot of websites, and I run them in Docker containers. What happens is, I end up with URLs like this 0.0.0.0:1234
.
This is a problem because,
- They are difficult to remember
- Do not allow sub-domains.
- Bad for password managers
My initial solution was to add a reverse proxy with Nginx so I have virtual hosts that point to my containers. However, this means I was writing the same Nginx configuration, over and over again, only with different ports.
So as any sane developer will do, I took a couple hours to automate the process once and for all.
The solution
I ended up creating a docker image to generate my configuration files and be a proper reverse proxy.
You can find it here
Features
- Sets up reverse proxies with just a few lines of configuration
- Can automatically obtain SSL certificates from let's encrypt
- Can be used to set up load balancing between several servers
- Allows fine tuning of the load balancing configuration.
I'll add more features as I discover more use cases. Let me know if there is anything
Proper details on how to use are in the README.md
of the repository.
If you like it, star on GitHub.
Top comments (5)
I would agree with the other's suggestion that you should look into Traefik. I personally favor Kubernetes as the backend for that, but Swarm is likely already installed if you are on a recent version of docker and is supported too. That all being said, I enjoyed your approach and write up. I bet you learned a good amount from this project, and that is never a bad thing!
Good job Stephen, well documented and very clean written scripts. Thanks for sharing.
Yeah Traefik is definitely a good choice for these kind of things, I used it myself in a similar fashion in one of my projects github.com/psyhomb/k8s-deployer
Anyway good work!
Why didn't you use Traefik?
Just hearing about it. I'll check it out.