DEV Community

Cover image for How to run Ghost CMS + Docker + Digital Ocean

How to run Ghost CMS + Docker + Digital Ocean

Rafael Corrêa Gomes
Writing about eCommerce development, Magento, Shopify, automation, productivity and developer career.
Originally published at Updated on ・2 min read

As a developer probably you heard before about Ghost the #1 open-source headless Node.js CMS, I was planning to install it in Digital Ocean using a simple $5 Droplet using Docker instead of their 1-click to install.

I did researches and I didn't find some developer-friendly method to get it started. So why not create one?!
If you want a quick start you can access my Ghost CMS + Docker Compose repository to check it out!


What I most like, is the Ghost's value proposition and what they want to achieve, the simplicity and well-designed panel and integrations motivated me to start too.
I wish more developers know the benefits to use it and to have the chance to test and use it in personal and professional projects as I did!


I decided to create something that makes it easier to start to use in production and in your local environment. So I created a bash script to have these advantages:

☝️ 1 command to install

👨‍💻 Ready to production and local development

⚡ Performance Optimized

🔒 SSL auto-renewed


  • Ghost CMS (Last version)
  • MySQL 5.7
  • Docker

Bash commands

Commands Description
./dc start Start your containers
./dc stop Stop all containers
./dc update Get Ghost updates and restart containers



In production, you can run one command to install, specifying your domain as the last parameter.

curl -s | bash -s setup
Enter fullscreen mode Exit fullscreen mode


To prepare your local environment you just need to have Docker and Docker Compose installed and run:

git clone ghost
cd ghost/dev
docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

Creating the script

I started assuming that you just created your environment and is running the script that I created to install, this below is the step-by-step description:


  1. Change the domain in the NGINX and Docker file.
  2. Update packages
  3. Install SSL
  4. Install Docker
  5. Install Docker Compose
  6. Prepare the Ghost folders
  7. Configure the cron
  8. Start the Docker containers
  9. Show the URL to access

🙂 Thank you!

I hope you liked and enjoyed this post, I created it to the developer community to be motivated to test it as I did, if you have feedbacks please report or provide pull-requests, and don't' forget to give a star.

Discussion (1)

arjithn profile image
Arjith Natarajan

Hi Rafael ! Thanks for this post +1!
How about using this to deploy to AWS Elasticbeanstalk rather than Digital Ocean. What changes would one need to do then?