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 .


  • 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.



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


  1. Clone repository
git clone 
  1. Import database schema
cd myems/database/install
mysql -u root -p < myems_billing_baseline_db.sql
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_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

Assume the host IP is, the database IP is, 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
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

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