This project is part of a series of microservices that are in my repository in order to guide other developer about micro-services architecture in nodejs.
The project was developed on ubuntu 18.04 and all the instructions in this guide are based on this linux distribution. Before proceeding it is needed that you have installed on your machine the following tools:
- nodejs => apt-get install nodejs
- npm => apt-get install npm
- Docker
- Docker compose
PS: It may be needed that you have to install some npm packages that are not installed as part of the project but globally:
- enc-cmd
- sequelize-cli
- You can use this development-tool project to help you out with database configuration.
In order to execute this project smoothly it is necessary to create a a file called .env-cmdrc with the following structure:
{
"development": {
"NODE_ENV": "development",
"DATABASE_NAME": "dev",
"DATABASE_USER_NAME": "root",
"DATABASE_PASSWORD": "root",
"DATABASE_DIALECT": "mysql",
"DATABASE_LOGGING": true,
},
"stage": {
"NODE_ENV": "stage",
"DATABASE_NAME": "dev",
"DATABASE_USER_NAME": "root",
"DATABASE_PASSWORD": "root",
"DATABASE_DIALECT": "mysql",
"DATABASE_LOGGING": true,
},
"test": {
"NODE_ENV": "test",
"DATABASE_NAME": "dev",
"DATABASE_USER_NAME": "root",
"DATABASE_PASSWORD": "root",
"DATABASE_DIALECT": "mysql",
"DATABASE_LOGGING": true,
},
"production": {
"NODE_ENV": "production",
"DATABASE_NAME": "dev",
"DATABASE_USER_NAME": "root",
"DATABASE_PASSWORD": "root",
"DATABASE_DIALECT": "mysql",
"DATABASE_LOGGING": true,
}
}
Also a file called .sequelizerc is required with the following structure:
const path = require('path');
module.exports = {
'config': path.resolve('./app/db/config', 'config.json'),
'models-path': path.resolve('./app', 'models'),
'seeders-path': path.resolve('./app/db', 'seeders'),
'migrations-path': path.resolve('./app/db', 'migrations')
};
In order to run the project in development mode it is required to execute the steps below:
- Access the project development-tool/setup;
- Grant execution permission to setup.sh: chmod +x setup.sh;
- Execute the script: ./setup.sh. (This will build all required docker images and launch them);
- docker ps and you should see all docker images up and running.
After the steps above it is necessary to check which ip address which database is running and to do check that out follow the steps belo:
- As result of command docker ps copy the CONTAINER_ID;
- Execute docker inspect <CONTAINER_ID> and you should see in the end of the output just look for the tah "Networks => IPAddress" then copy it.
- Access the project user-management;
- Execute npm install;
- Edit the file config.json and past the IP address on host env variable;
- In the root folder of project user-management execute on terminal:
- npm run migrate:dev;
- npm run dev
After the steps about the service should be up and running on port 3004.
In order to run the tests it is required to execute the steps below:
- Access the project development-tool/setup;
- Grant execution permission to setup.sh: chmod +x setup.sh;
- Execute the script: ./setup.sh. (This will build all required docker images and launch them);
- docker ps and you should see all docker images up and running.
After the steps above it is necessary to check which ip address which database is running and to do check that out follow the steps belo:
- As result of command docker ps copy the CONTAINER_ID;
- Execute docker inspect <CONTAINER_ID> and you should see in the end of the output just look for the tah "Networks => IPAddress" then copy it.
- Access the project user-management;
- Execute npm install;
- Edit the file config.json and past the IP address on host env variable on test environment;
- In the root folder of project user-management execute on terminal:
- npm run migrate:test;
- npm run test