This project works only on NodeJS v10.16.0 - v14.x.x. Please have a look at this issue for more.
- π About this project
- β¨ What collection-type is inside this project?
- π How to run
- π§Ά using
yarn
- π using
docker-compose
- π§Ά using
- βοΈ Set up application configuration
- π Executing commands inside the Docker container
- πΌοΈ Pull this project's docker image from DockerHub
- π Reset admin password in Strapi client (Strapi with UI)
- π» Related repositories
- π° Related articles
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.
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 :
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
:
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 :
- Clone this repository :
git clone https://github.com/kevinadhiguna/strapi-dockerize
- Change directory
cd strapi-dockerize
- Install dependencies :
yarn
- Create a
.env
file which stores application configuation, based on the.env.example
file:
cp .env.example .env
-
Fill in the
.env
file with the application configuration. This step migth be quite long, please refer the set up application configuration section. -
Run your Strapi app :
using yarn
yarn develop
using docker-compose
doocker-compose up
Please make sure you have Docker and docker-compose installed in your machine. Please refer here to install them :
- Docker installation
- Docker compose installation
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.
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.
Port that your Strapi app interacts with database management system (DBMS). For example :
DATABASE_PORT=27017
The database name in database management system (e.g. : MongoDB, MySQL, PostgreSQL). For instance :
DATABASE_NAME=myStrapiApp
The username of your database that you use in your Strapi app. For instance :
DATABASE_USERNAME=admin
The password of your database that you use in your Strapi app. For instance :
DATABASE_PASSWORD=admin123
Usually, you set this field if your database in your Strapi app is hosted, for example :
- MongoDB Atlas for MongoDB
- Free MySQL Hosting for MySQL
- ElephantSQL for PostgreSQL
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.
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
For example :
AWS_ACCESS_KEY_ID=DGHY4REH7IUVDF908UNV
For example :
AWS_SECRET_ACCESS_KEY=3bFhYF76zFG+5F78436KJ8bH3x19TALuIxytfNc/
For example :
AWS_REGION=eu-west-2
Please see AWS service endpoints for details.
An email address your Strapi app will send an email from. For example :
An email address your Strapi app will be receiving emails. For example :
For example :
AWS_BUCKET=mybucket.mydomain.com
For example :
AWS_S3_STORAGE_CLASSES=S3 Standard
You can read more about AWS Storage Classes.
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.
This is API key from Cloudinary.
For instance :
API_KEY=253857109845223
You can leave it blank if you do not use Cloudinary.
This is API secret from Cloudinary.
For example :
API_SECRET=DBVrte27_GtyrIUxFGydk_R8tRX
If you do not use Cloudinary, you can leave it blank.
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
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
Specify the port that you want to run.
For example :
PORT=1337
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==
This refers to the environment that your application runs. It could be development
, staging
, production
, or something else.
For example :
NODE_ENV=development
You can run:
docker-compose exec <container_ID> /bin/sh
or
docker-compose exec <container_name> /bin/sh
You can reset Strapi admin password by running this command:
yarn strapi admin:reset-user-password --email=<admin_email_address> --password=<new_admin_password>
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
Please feel free to have a look at :
- Strapi MySQL - docker-compose
- Strapi MariaDB - docker-compose
- Strapi MongoDB - docker-compose
- Strapi PostgreSQL - docker-compose
- How to setup Amazon S3 upload provider in your Strapi app
- How to setup AWS SES email provider in your Strapi app
- What is CORS ? How to configure CORS in Strapi ?
- How to disable telemetry in Strapi
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!