My tinkering with things can sometimes result in extra parts laying around after the project is finished and not knowing where they fit. The same was the case recently when updating this website. Well I broke it, bad!
A little background. This website is running inside a Docker container which is load balanced behind a NGINX proxy Dockerized and Load balanced Ghost). I've been upgrading both Docker and Ghost as new versions become available. However, I had a problem with my Ghost installation which I ignored until the recent release of Ghost 0.7.1.
The Ghost installation had volumes mounted to my host for media, database, and themes. This way when new versions of Ghost would come down the pipe I would only have to deploy a new version of Ghost connect it to my volumes and be off and running. Well... That was the idea.
What was happening in in Prod was I couldn't deploy a new Ghost image without it breaking everything. My ugly workaround was to connect to the Ghost container and manually upgrade Ghost from inside the container. Ewww, Ugly!
So I found some nice Ghost projects on Github however they were not meeting all my requirements so I combined several projects into a docker-compose project. Now, I can control my Ghost blog via docker-compose and easily build in more functionality later on like scaling, High Availability, and Continuous Integration/Deployment which I'm using this project as the basis.
My blog can now easily be updated when new versions of Ghost comes out yet has the flexibility to add more features. Check back for the next phase of this project.
Check out my Ghost-Standalone Project