Skip to main content

Docker Compose

In this guide, you will deploy MyEMS with Docker compse by creating and starting all the services with a single command .

Prerequisite

  • Installed docker, docker-compose, npm on the host.
  • Installed MySQL server with username 'root' and password '!MyEMS1'.
  • The MySQL database can be connected from the host on which the Docker Engine runs.

Configuration

tip

The host refers to the server on which the docker engine runs. The IP and account password are assumed and used to show instructions. Please modify them as appropriate.

----
Host IP192.168.0.1
Database IP192.168.0.2
Database Userroot
Database Password!MyEMS1

Installation

  1. Clone repository
git clone https://github.com/myems/myems.git
  1. Import database schema
cd myems/database/install
mysql -u root -p < myems_billing_db.sql
mysql -u root -p < myems_carbon_db.sql
mysql -u root -p < myems_energy_baseline_db.sql
mysql -u root -p < myems_energy_db.sql
mysql -u root -p < myems_energy_model_db.sql
mysql -u root -p < myems_energy_plan_db.sql
mysql -u root -p < myems_energy_prediction_db.sql
mysql -u root -p < myems_fdd_db.sql
mysql -u root -p < myems_historical_db.sql
mysql -u root -p < myems_production_db.sql
mysql -u root -p < myems_reporting_db.sql
mysql -u root -p < myems_system_db.sql
mysql -u root -p < myems_user_db.sql

Note: Refer to database

  1. Modify Config
tip

Assume the host IP is 192.168.0.1, the database IP is 192.168.0.2, the database account is: root, and the database password is: !MyEMS1, please modify them as appropriate

3.1 Modify API's address in nginx.conf

cd myems
nano myems-admin/nginx.conf
nano myems-web/nginx.conf

3.2 Copy example.env to .env in each folder and modify database IP, username and password in .env

cd myems
cp myems-aggregation/example.env myems-aggregation/.env
nano myems-aggregation/.env
cp myems-api/example.env myems-api/.env
nano myems-api/.env
cp myems-cleaning/example.env myems-cleaning/.env
nano myems-cleaning/.env
cp myems-modbus-tcp/example.env myems-modbus-tcp/.env
nano myems-modbus-tcp/.env
cp myems-normalization/example.env myems-normalization/.env
nano myems-normalization/.env

3.3 Modify upload folder in docker-compose.yml If Windows host, use c:\upload for volumes/source in api and admin services. If Linux host, use /upload for volumes/source in api and admin services. Make sure the upload folders in api and admin are same folder on host.

  1. Build Web UI

Modify configuration file:

note

Get mapboxToken from https://mapbox.com and then set showOnlineMap to true. If you want to turn off online map feature, set showOnlineMap to false

cd myems/myems-web
sudo nano src/config.js

Build:

cd myems/myems-web
npm i --unsafe-perm=true --allow-root --legacy-peer-deps
npm run build
  1. Run docker-compose command

On Windows Host:

cd myems
docker-compose -f docker-compose-on-windows.yml up -d

On Linux Host:

cd myems
docker-compose -f docker-compose-on-linux.yml up -d
  1. Verification
AddressExpected Result
myems-web192.168.0.1:80Login succeeded by entering account and password
myems-admin192.168.0.1:8001Login succeeded by entering account and password
myems-api192.168.0.1:8000/versionReturn version information
info

If the API reports an error, please confirm Whether the database IP, database account and database password in .env are correct. If not, please modify them then execute:

docker-compose up --build -d
How to solve image pull timeout issues

Due to ISP network issues, you may experience slow image pulling. You can use third-party acceleration services.