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
.envfile which stores application configuation, based on the.env.examplefile:
cp .env.example .env-
Fill in the
.envfile 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 developusing docker-compose
doocker-compose upPlease 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.1Otherwise, please enter your database host URL, such as :
DATABASE_HOST=cluster3.abc65.mongodb.netThe 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=trueSRV 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=27017The database name in database management system (e.g. : MongoDB, MySQL, PostgreSQL). For instance :
DATABASE_NAME=myStrapiAppThe username of your database that you use in your Strapi app. For instance :
DATABASE_USERNAME=adminThe password of your database that you use in your Strapi app. For instance :
DATABASE_PASSWORD=admin123Usually, 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=trueThis 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:3000For example :
AWS_ACCESS_KEY_ID=DGHY4REH7IUVDF908UNVFor example :
AWS_SECRET_ACCESS_KEY=3bFhYF76zFG+5F78436KJ8bH3x19TALuIxytfNc/For example :
AWS_REGION=eu-west-2Please see AWS service endpoints for details.
An email address your Strapi app will send an email from. For example :
EMAIL_DEFAULT_DEFAULT_FROM=hello@example.comAn email address your Strapi app will be receiving emails. For example :
EMAIL_DEFAULT_REPLY_TO=reply@example.comFor example :
AWS_BUCKET=mybucket.mydomain.comFor example :
AWS_S3_STORAGE_CLASSES=S3 StandardYou can read more about AWS Storage Classes.
This is the cloud name of your Coudinary account.
This looks like :
CLOUD_NAME=ehsjuvnxpzPlease leave it blank if your Strapi app foes not use Cloudinary.
This is API key from Cloudinary.
For instance :
API_KEY=253857109845223You can leave it blank if you do not use Cloudinary.
This is API secret from Cloudinary.
For example :
API_SECRET=DBVrte27_GtyrIUxFGydk_R8tRXIf 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://vx547s32f45d7v91q865hgh5421z8932@f584318.ingest.sentry.io/6712395Simply 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.4Specify the port that you want to run.
For example :
PORT=1337Generate 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=developmentYou can run:
docker-compose exec <container_ID> /bin/shor
docker-compose exec <container_name> /bin/shYou 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 kai@doe.com 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=kai@doe.com --password=Kaidoe12345Please 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!

