/strapi-nextjs-docker-boilerplate

🎨 Boilerplate for building Dockerized 🐳 applications using Strapi v4 + Next.js + Postgres +Nginx

Primary LanguageJavaScriptMIT LicenseMIT

Logo

Twitter: Hello Buraste

Dockerize your Strapi v4 backend with Next.js and Nginx Support 🚀

Table of Contents

Current Status

This package is currently under development and should be consider BETA in terms of state. We are currently accepting contributions to help develop and maintain this package.

For more information on contributing please see the contrib message below.

What for?

  • Easy development & production environment
  • Easy frontend adoption (just delete frontend folder and create your best)
  • Creating full-stack applications for small or medium size projects

Features & Stacks

Backend

  • Strapi v4
  • Node.js v16 for Docker Image
  • Yarn package manager

Frontend

  • Next.js v12.2
  • React.js v18.2
  • Typescript v4.7
  • Node.js-alpine for Docker Image
  • Yarn package manager

Database

  • Postgres v12-alpine
  • Linux/amd64 platform for platform error on Apple M1 chips
  • Named volumes

Reverse Proxy

  • Nginx Latest
  • Fastcgi support
  • Mime-types
  • Security configs

Containerization

  • Docker-compose v3 for container orchestration 🐳
  • Seperated Dockerfiles for development and production

Environment Variables Management

  • One file for backend + frontend + database + nginx

Installation and Usage

You have to currently exist Docker and Docker Compose on your system:

Installation

  • Clone the repo
  • Copy .env.example file to .env
  • Change credentials with secure and strong ones
  • If you are on development, be sure ENVIRONMENT=development on .env file
  • If you are on production or want to production build, change with ENVIRONMENT=production
  • Be sure localhost:80 is accesible and not using from another process (Nginx runs on 80)
  • Pull necessary images:
docker-compose pull

Usage

  • Build and up your docker-compose file if everything is ok:
docker-compose build && docker-compose up -d
  • Now you can access to Next.js frontend on http://localhost and Strapi backend (admin) on http://localhost/strapi/admin
  • Register with your e-mail and password.
  • Go to Content-Type Builder, It has sample content type as Article and this content type has three field as title body and cover.
  • For creating new Article, go to Content Managerand click Articleon left pane, click Create new entryand fill the blanks > click Publish!
  • For testing API endpoint you need to give public access to the Article so
    • Go to Settings>User & Permissions Plugin>Roles>Public>Articleand select find findOne, If you need more, select what you want and save!
    • Go to the http://localhost/strapi/api/articles

Security for Endpoints

Secure all your Strapi related endpoints in Nginx, make sure to use API tokens to connect to the backend and keep this information private. The Nginx config that on the repo is for development, not production ⛔️

Contributing

We are always welcome for contributions to help shape this package.

If interested please feel free to email the maintainer Burak at: hello@buraste.com

Authors

License

See the LICENSE file for licensing information.