🚀 Strapi quickstart with Docker
How to run this promising CMS immediately and start right now on an innovative technology that will make you delighted !
What is it ?
Why this quickstart ?
I discovered Strapi while looking after a Headless CMS a few months ago to build the API for a project, and it made my day! 🤗
After contributing to the documentation and fixing some typo in the code, I am feeling excited to also contribute to the core code.
The Strapi’s roadmap contains a lot of features which are implemented by the rest of the team quite quickly. Therefore, I decided to focus on the deployment part to find an easy way for people to start using Strapi.
You’ll learn in this quickstart article how to use Strapi without any configuration. This example is made with the MongoDB database as it’s easier to learn and it is the most used one in the NodeJS community.
🛠 Prerequisite softwares
🚀 Starting Strapi
In a terminal, type the below commands:
$ git clone https://github.com/strapi/strapi-docker && cd strapi-docker
$ docker-compose up
🔥 For hackers, you could find the generated application in the
strapi-app folder. Check out the concepts of Strapi, and start building your custom behaviors !
🦄 How does it works ?
Behind the scene
To achieve that, I have performed several contributions on the core:
- Improve the Strapi’s CLI to handle database configuration arguments.
- Improve the strapi-generate-new to allow Docker volumes.
- Publish the Docker image on the hub.
- Write the Docker compose file and the documentation.
I officially joined the Strapi’s organization as a contributor to maintain these features.
For the end user
Here’s explained how services are orchestrated within the docker-compose.yml file:
- db is the MongoDB image, customize this to use another database provider supported by Strapi actually MongoDB, Postgres, MySQL, Sqlite3, and Redis.
- api is the Strapi Docker image that includes the CLI to create and start your application.
Use environment to customize variable used to bootstrap your api (configuration of others connectors aren’t explained in this post):
APP_NAMEto override the
strapi-appgenerated folder name (you should also update the volumes paths).
DATABASE_CLIENTmongo, postgres, mysql, sqlite3, redis.
DATABASE_HOSTdatabase service name.
DATABASE_PORTdepends on your database client.
DATABASE_NAMEinitializes a database with a specific name (default strapi). When using MongoDB, you should also update the
MONGO_INITDB_DATABASEenvironment in the db service.
DATABASE_USERNAMEset the username of the database connection.
DATABASE_PASSWORDset the password of the database connection.
💡 What’s next…
This tutorial is made to start your development environment as easy as possible. The next step, for you, will be the deployment of the Docker container to the cloud. (I’ll cover that part in a future post)
Thanks to the team !
It was a nice experience working with Strapi’s team, they were reactive to my pull requests and relevant to code reviews.
I’m confident that this startup will grow up and will make content management easy and powerful, for smaller or bigger projects.
Finally, I’m glad to be part of the team and looking forward to contribute to the future of bootSTRaping APIS… 👈