Giter Site home page Giter Site logo

seoeaa / strapi-dockerize Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kevinadhiguna/strapi-dockerize

0.0 0.0 0.0 1.9 MB

๐Ÿ“ฆ A Strapi app powered by Docker and docker-compose. Also a guide to configure your Strapi app with hosted database service such as MongoDB Atlas.

License: MIT License

Shell 5.17% Dockerfile 25.47% JavaScript 65.71% HTML 3.66%

strapi-dockerize's Introduction


Strapi Dockerize

Strapi Dockerize

Build With Yarn Build With Docker

A Strapi app powered by Docker and docker-compose.
Report Bug ยท Request a Feature

Strapi JavaScript Docker AWS MongoDB Atlas GitLab CI

โš ๏ธ Warning

This project works only on NodeJS v10.16.0 - v14.x.x. Please have a look at this issue for more.


๐Ÿ“š Table of Contents

  1. ๐ŸŒˆ About this project
  2. โœจ What collection-type is inside this project?
  3. ๐Ÿ“– How to run
    • ๐Ÿงถ using yarn
    • ๐Ÿ‹ using docker-compose
  4. โš™๏ธ Set up application configuration
  5. ๐Ÿ“ Executing commands inside the Docker container
  6. ๐Ÿ–ผ๏ธ Pull this project's docker image from DockerHub
  7. ๐Ÿ”’ Reset admin password in Strapi client (Strapi with UI)
  8. ๐Ÿ’ป Related repositories
  9. ๐Ÿ“ฐ Related articles

๐ŸŒˆ About this project

This is a Strapi app powered by Docker and docker-compose. Nevertheless, this app provides an example and a guide to configure your Strapi app with hosted database service such as MongoDB Atlas.


โœจ What collection-type is featured in this project?

You can think collection-type as an API generated by Strapi. In this project, Juventus collection-type, is provided as a template. This is how it looks :

Collection-Type

The position has enumeration data type but this is how the auto-generated GraphQL schema (only for the Juventus content-type data) looks :

enum ENUM_JUVENTUS_POSITION {
  GK
  DF
  MF
  FW
}

type Juventus {
  id: ID!
  _id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  name: String
  number: Int
  age: Int
  country: String
  appearences: Int
  goals: Int
  minutesPlayed: Int
  position: ENUM_JUVENTUS_POSITION
  profpic: UploadFile
  published_at: DateTime
}

Now, it is clear that available options for position are : GK. DF, MF, FW.

In addition, there is another content-type named facility:

facility

You can create a database such as in MongoDB Atlas or in your local machine (laptop) to use this Strapi project. In addition, if you want to integrate this Strapi app with client side (front-end web), you can use these repos :

  1. Ant Design Pro Strapi with Apollo GraphQL client
  2. Ant Design Pro Strapi with URQL GraphQL client

๐Ÿ“– How to Run

  1. Clone this repository :
git clone https://github.com/kevinadhiguna/strapi-dockerize
  1. Change directory
cd strapi-dockerize
  1. Install dependencies :
yarn
  1. Create a .env file which stores application configuation, based on the .env.example file:
cp .env.example .env
  1. Fill in the .env file with the application configuration. This step migth be quite long, please refer the set up application configuration section.

  2. Run your Strapi app :

using yarn

yarn develop

using docker-compose

doocker-compose up

โš ๏ธ Prerequisites of using docker and docker-compose

Please make sure you have Docker and docker-compose installed in your machine. Please refer here to install them :

  1. Docker installation
  2. Docker compose installation


โš™๏ธ Set up application configuration (.env) :

DATABASE_HOST

If you run your database locally or in your computer, fill :

DATABASE_HOST=127.0.0.1

Otherwise, please enter your database host URL, such as :

DATABASE_HOST=cluster3.abc65.mongodb.net

The above is an example if you host your database in MongoDB Atlas.


DATABASE_SRV

Value of Database SRV in MongoDB. It could be either true or false as it is boolean. For example :

DATABASE_SRV=true

SRV is a way to specify a single hostname that resolves to multiple host names. When using SRV, the driver conducts an SRV lookup to get the actual names of all of the hosts. Also, when using SRV, the driver does lookups for TXT records, which can contain specific URI options to configure the driver.

Please have a look at MongoDB community forum for more.


DATABASE_PORT

Port that your Strapi app interacts with database management system (DBMS). For example :

DATABASE_PORT=27017

DATABASE_NAME

The database name in database management system (e.g. : MongoDB, MySQL, PostgreSQL). For instance :

DATABASE_NAME=myStrapiApp

DATABASE_USERNAME

The username of your database that you use in your Strapi app. For instance :

DATABASE_USERNAME=admin

DATABASE_PASSWORD

The password of your database that you use in your Strapi app. For instance :

DATABASE_PASSWORD=admin123

DATABASE_SSL

Usually, you set this field if your database in your Strapi app is hosted, for example :

Then in order to establish a secure connection, you want enable SSL. If so, set :

DATABASE_SSL=true

This fields is boolean. Hence, you can either set it to true or false only.


CORS_ORIGIN

Please add URL/IP address of :

  • App's client-side (a Web App and/or a Mobile app)
  • Strapi Admin Panel

CORS only cares three aspects, namely :

  • Scheme (e.g. : https, http, etc.)
  • URL/IP address
  • Port

So, if your app's client-side and Strapi admin panel run on http://192.168.1.4:3000 and http://192.168.1.4:1337 respectively, you should write :

CORS_ORIGIN=http://192.168.1.4:1337,http://192.168.1.4:3000

AWS_ACCESS_KEY_ID

For example :

AWS_ACCESS_KEY_ID=DGHY4REH7IUVDF908UNV

AWS_SECRET_ACCESS_KEY

For example :

AWS_SECRET_ACCESS_KEY=3bFhYF76zFG+5F78436KJ8bH3x19TALuIxytfNc/

AWS_REGION

For example :

AWS_REGION=eu-west-2

Please see AWS service endpoints for details.


EMAIL_DEFAULT_FROM

An email address your Strapi app will send an email from. For example :


EMAIL_DEFAULT_REPLY_TO

An email address your Strapi app will be receiving emails. For example :


AWS_BUCKET

For example :

AWS_BUCKET=mybucket.mydomain.com

AWS_S3_STORAGE_CLASSES

For example :

AWS_S3_STORAGE_CLASSES=S3 Standard

You can read more about AWS Storage Classes.


CLOUD_NAME

This is the cloud name of your Coudinary account.
This looks like :

CLOUD_NAME=ehsjuvnxpz

Please leave it blank if your Strapi app foes not use Cloudinary.


API_KEY

This is API key from Cloudinary.
For instance :

API_KEY=253857109845223

You can leave it blank if you do not use Cloudinary.


API_SECRET

This is API secret from Cloudinary.
For example :

API_SECRET=DBVrte27_GtyrIUxFGydk_R8tRX

If you do not use Cloudinary, you can leave it blank.


SENTRY_DSN

This is a Sentry DSN that you obtain from Sentry if you use it. Otherwise, leave it blank.
For example :

SENTRY_DSN=https://[email protected]/6712395

HOST

Simply open terminal and type ip addr show (MacOS / Linux-based OS) or ipconfig (Windows). You should see like 192.168.1.4 which is the value of this variable.
Example :

HOST=http://192.168.1.4

PORT

Specify the port that you want to run.
For example :

PORT=1337

ADMIN_JWT_SECRET

Generate a secure token is required for superadmin authentication.
In terminal, please type :

openssl rand 64 | base64 # (linux/macOS users)
# or
node -e "console.log(require('crypto').randomBytes(64).toString('base64'))" # (all users)

Then you should see something like this in your terminal :

ErhxCk10YqNCImwodl5Ml/Maqnw46oTyLjr+9Na4bjmJSLVWnCS90BJRAAkLsspj98caylAJgikBO9ZS0jEiOQ==

Please copy the token and assign it like this :

ADMIN_JWT_SECRET=ErhxCk10YqNCImwodl5Ml/Maqnw46oTyLjr+9Na4bjmJSLVWnCS90BJRAAkLsspj98caylAJgikBO9ZS0jEiOQ==

NODE_ENV

This refers to the environment that your application runs. It could be development, staging, production, or something else.
For example :

NODE_ENV=development


๐Ÿ“ Executing commands inside the Docker container

You can run:

docker-compose exec <container_ID> /bin/sh

or

docker-compose exec <container_name> /bin/sh


๐Ÿ”’ Reset Admin password in Strapi client (Strapi with UI)

You can reset Strapi admin password by running this command:

using Yarn

yarn strapi admin:reset-user-password --email=<admin_email_address> --password=<new_admin_password>

using NPM

npm run strapi admin:reset-user-password --email=<admin_email_address> --password=<new_admin_password>

However if you have installed Strapi globally (not recommended), you can run this command:

strapi admin:reset-user-password --email=<admin_email_address> --password=<new_admin_password>

Example case:
You have [email protected] registered as the admin email for login credential in Strapi client but you forgot the password. If you use Yarn and want to reset the password to Kaidoe12345, you can do so by running :

yarn strapi admin:reset-user-password [email protected] --password=Kaidoe12345


๐Ÿ’ป Related Repositories

Please feel free to have a look at :



๐Ÿ“ฐ Related Articles

Also, this article might be helpful to use this project : https://about.lovia.life/creating-strapi-app-image-with-docker/.

Should you have any questions or discussion, please feel free to ask here. Thanks!


Visits Badge

strapi-dockerize's People

Contributors

carlzoo avatar kevinadhiguna avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.