본문으로 바로 가기

Docker Compose

이 가이드에서는 Docker compose를 사용하여 단일 명령으로 모든 서비스를 생성 및 시작하여 MyEMS를 배포할 것입니다.

전제 조건

  • 호스트에 docker, docker-compose, npm이 설치되어 있어야 합니다.
  • 사용자명 'root', 비밀번호 '!MyEMS1'로 MySQL 서버가 설치되어 있어야 합니다.
  • MySQL 데이터베이스는 Docker Engine이 실행되는 호스트에서 연결할 수 있어야 합니다.

구성

호스트는 docker 엔진이 실행되는 서버를 의미합니다. IP 및 계정 비밀번호는 예시로 가정되어 지침을 보여주기 위해 사용됩니다. 적절하게 수정해 주세요.

----
호스트 IP192.168.0.1
데이터베이스 IP192.168.0.2
데이터베이스 사용자root
데이터베이스 비밀번호!MyEMS1

설치

  1. 저장소 클론
git clone https://github.com/myems/myems.git
  1. 데이터베이스 스키마 가져오기
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

참고: 데이터베이스 참조

  1. 구성 수정

호스트 IP가 192.168.0.1, 데이터베이스 IP가 192.168.0.2, 데이터베이스 계정: root, 데이터베이스 비밀번호: !MyEMS1이라고 가정합니다. 적절하게 수정해 주세요

3.1 nginx.conf에서 API 주소 수정

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

3.2 각 폴더에서 example.env를 .env로 복사하고 .env에서 데이터베이스 IP, 사용자명 및 비밀번호 수정

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 docker-compose.yml에서 upload 폴더 수정 Windows 호스트인 경우, api 및 admin 서비스의 volumes/source에 c:\upload 사용. Linux 호스트인 경우, api 및 admin 서비스의 volumes/source에 /upload 사용. api와 admin의 upload 폴더가 호스트의 동일한 폴더인지 확인.

  1. 웹 UI 빌드

구성 파일 수정:

참고

https://mapbox.com에서 mapboxToken을 가져온 후 showOnlineMap을 true로 설정하세요. 온라인 지도 기능을 끄려면 showOnlineMap을 false로 설정하세요.

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

빌드:

cd myems/myems-web
npm i --unsafe-perm=true --allow-root --legacy-peer-deps
npm run build
  1. docker-compose 명령 실행

Windows 호스트:

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

Linux 호스트:

cd myems
docker-compose -f docker-compose-on-linux.yml up -d
  1. 검증
주소예상 결과
myems-web192.168.0.1:80계정 및 비밀번호 입력 후 로그인 성공
myems-admin192.168.0.1:8001계정 및 비밀번호 입력 후 로그인 성공
myems-api192.168.0.1:8000/version버전 정보 반환
정보

API에서 오류가 보고되면 .env의 데이터베이스 IP, 데이터베이스 계정 및 데이터베이스 비밀번호가 올바른지 확인하세요. 그렇지 않으면 수정 후 다음을 실행하세요:

docker-compose up --build -d
이미지 풀 타임아웃 문제 해결 방법

ISP 네트워크 문제로 인해 이미지 풀이 느릴 수 있습니다. 타사 가속 서비스를 사용할 수 있습니다.