メインコンテンツへスキップ

WDocker on Windows

このガイドでは、Windows上でDockerを使用してMyEMSをデプロイする方法を説明します。

前提条件

  • ホストマシンにDockerとnpmがインストールされていること。
  • MySQLサーバーがインストールされていること。
  • Docker Engineが実行されているホストからMySQLデータベースに接続可能であること。
  • ハードウェア要件:少なくとも8GBのRAM、20GBのストレージ容量(データベースとDockerコンテナ用)。

ソースコードをクローンします:

cd ~
git clone https://github.com/myems/myems

ステップ1 データベース

データベース を参照してください。

ステップ2 myems-api

このセクションでは、Docker上にmyems-apiをインストールします。

  • ソースコードをルートディレクトリにコピーします。
cp -r myems/myems-api c:\
cd c:\myems-api
  • example.envファイルを基に.envファイルを作成します。
注意

必ず127.0.0.1 を実際のホストのIPアドレスに手動で置き換えてください。

cp example.env .env
  • ソースコードからイメージをビルドします。
docker build -t myems/myems-api .

ビルドを実行するユーザーのアーキテクチャやオペレーティングシステムに限らず、複数のプラットフォーム向けにビルドする場合: buildxを使用し、--platformフラグでビルド出力の対象プラットフォーム(例:linux/amd64、linux/arm64、darwin/amd64)を指定できます。

docker buildx build --platform=linux/amd64 -t myems/myems-api .
  • Dockerコンテナを実行します。

ホスト上でc:\myems-uploadフォルダを作成し、コンテナにバインドマウントします。同時に.envファイルもコンテナにバインドマウントします:

docker run -d -p 8000:8000 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\myems-api\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-api myems/myems-api
  • -d:コンテナをバックグラウンドで実行し、コンテナIDを出力します。
  • -p:コンテナのポートをホストに公開します。8000:8000(ホスト:コンテナ)は、コンテナのポート8000(右)をホストマシンのTCPポート8000(左)にバインドします。
  • -v:-vまたは--volumeを使用して、Dockerホストにまだ存在しないファイルまたはディレクトリをバインドマウントする場合、-vは自動的にエンドポイントを作成します(ディレクトリとして作成されます)。 roオプションを指定すると、バインドマウントがコンテナ内に読み取り専用でマウントされます。 v4.7.0以前のバージョンでは、/app/.envの代わりに/code/.envを使用してください。
  • --log-opt max-size=1m:ログがロールオーバーされる前の最大サイズです。正の整数に単位(k、m、g)を付加します。
  • --log-opt max-file=2:存在できるログファイルの最大数です。ログのロールオーバーによりファイル数が上限を超えた場合、最も古いファイルが削除されます。正の整数を指定します。
  • --restart:コンテナが終了した場合に適用される再起動ポリシーです。
  • --name:コンテナに名前を割り当てます。

コロンの前の絶対パスはホスト上のパスで、システムによって異なる場合があります。 コロンの後の絶対パスはコンテナ上のパスで、変更不可です。 .envファイルをバインドマウントパラメータとして渡すことで、後から設定値を変更できます。 .envファイルを変更した場合は、コンテナを再起動して変更を反映させてください。

イメージを別のコンピュータに移行する場合:

  • イメージをtarファイルにエクスポートします。
docker save --output myems-api.tar myems/myems-api
  • tarファイルを別のコンピュータにコピーし、tarファイルからイメージをロードします。
docker load --input .\myems-api.tar

ステップ3 myems-admin

このセクションでは、Docker上にmyems-adminをインストールします。

  • ソースコードをルートディレクトリにコピーします。
cp -r myems/myems-admin c:\
cd c:\myems-admin
注意

nginx.conf内の127.0.0.1:8000 を、myems-apiの実際のホストIPアドレスとポートに手動で置き換えてください。

notepad nginx.conf

(修正対象の行)

      proxy_pass http://127.0.0.1:8000/;
  • ソースコードからイメージをビルドします。
docker build -t myems/myems-admin .

ビルドを実行するユーザーのアーキテクチャやオペレーティングシステムに限らず、複数のプラットフォーム向けにビルドする場合: buildxを使用し、--platformフラグでビルド出力の対象プラットフォーム(例:linux/amd64、linux/arm64、darwin/amd64)を指定できます。

docker buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Dockerコンテナを実行します。

ホスト上でc:\myems-uploadフォルダを作成し、コンテナにバインドマウントします。同時にnginx.confファイルもコンテナにバインドマウントします(uploadフォルダの-vパラメータはmyems-apiのものと一致させてください):

docker run -d -p 8001:8001 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\myems-admin/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-admin myems/myems-admin
  • -d:コンテナをバックグラウンドで実行し、コンテナIDを出力します。
  • -p:コンテナのポートをホストに公開します。8001:8001(ホスト:コンテナ)は、コンテナのポート8001(右)をホストマシンのTCPポート8001(左)にバインドします。
  • -v:-vまたは--volumeを使用して、Dockerホストにまだ存在しないファイルまたはディレクトリをバインドマウントする場合、-vは自動的にエンドポイントを作成します(ディレクトリとして作成されます)。 roオプションを指定すると、バインドマウントがコンテナ内に読み取り専用でマウントされます。 v4.7.0以前のバージョンでは、/app/.envの代わりに/code/.envを使用してください。
  • --log-opt max-size=1m:ログがロールオーバーされる前の最大サイズです。正の整数に単位(k、m、g)を付加します。
  • --log-opt max-file=2:存在できるログファイルの最大数です。ログのロールオーバーによりファイル数が上限を超えた場合、最も古いファイルが削除されます。正の整数を指定します。
  • --restart:コンテナが終了した場合に適用される再起動ポリシーです。
  • --name:コンテナに名前を割り当てます。

イメージを別のコンピュータに移行する場合:

  • イメージをtarファイルにエクスポートします。
docker save --output myems-admin.tar myems/myems-admin
  • tarファイルを別のコンピュータにコピーし、tarファイルからイメージをロードします。
docker load --input .\myems-admin.tar

ステップ4 myems-modbus-tcp

このセクションでは、Docker上にmyems-modbus-tcpをインストールします。

  • ソースコードをルートディレクトリにコピーします。
cp -r myems/myems-modbus-tcp c:\
cd c:\myems-modbus-tcp
  • example.envファイルを基に.envファイルを作成します。
注意

必ず127.0.0.1 を実際のホストのIPアドレスに手動で置き換えてください。

cp example.env .env
  • ソースコードからイメージをビルドします。
docker build -t myems/myems-modbus-tcp .

ビルドを実行するユーザーのアーキテクチャやオペレーティングシステムに限らず、複数のプラットフォーム向けにビルドする場合: buildxを使用し、--platformフラグでビルド出力の対象プラットフォーム(例:linux/amd64、linux/arm64、darwin/amd64)を指定できます。

docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Dockerコンテナを実行します(管理者権限で実行)。
docker run -d -v c:\myems-modbus-tcp\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-modbus-tcp myems/myems-modbus-tcp
  • -d:コンテナをバックグラウンドで実行し、コンテナIDを出力します。
  • -v:-vまたは--volumeを使用して、Dockerホストにまだ存在しないファイルまたはディレクトリをバインドマウントする場合、-vは自動的にエンドポイントを作成します(ディレクトリとして作成されます)。 roオプションを指定すると、バインドマウントがコンテナ内に読み取り専用でマウントされます。 v4.7.0以前のバージョンでは、/app/.envの代わりに/code/.envを使用してください。
  • --log-opt max-size=1m:ログがロールオーバーされる前の最大サイズです。正の整数に単位(k、m、g)を付加します。
  • --log-opt max-file=2:存在できるログファイルの最大数です。ログのロールオーバーによりファイル数が上限を超えた場合、最も古いファイルが削除されます。正の整数を指定します。
  • --restart:コンテナが終了した場合に適用される再起動ポリシーです。
  • --name:コンテナに名前を割り当てます。

コロンの前の絶対パスはホスト上のパスで、システムによって異なる場合があります。 コロンの後の絶対パスはコンテナ上のパスで、変更不可です。 .envファイルをバインドマウントパラメータとして渡すことで、後から設定値を変更できます。 .envファイルを変更した場合は、コンテナを再起動して変更を反映させてください。

Dockerコンテナを別のコンピュータに移行する場合:

  • イメージをtarファイルにエクスポートします。
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • tarファイルを別のコンピュータにコピーし、tarファイルからイメージをロードします。
docker load --input .\myems-modbus-tcp.tar

ステップ5 myems-cleaning

このセクションでは、Docker上にmyems-cleaningをインストールします。

  • ソースコードをルートディレクトリにコピーします。
cp -r myems/myems-cleaning c:\
cd c:\myems-cleaning
  • example.envファイルを基に.envファイルを作成します。
注意

必ず127.0.0.1 を実際のホストのIPアドレスに手動で置き換えてください。

cp example.env .env
  • ソースコードからイメージをビルドします。
docker build -t myems/myems-cleaning .

ビルドを実行するユーザーのアーキテクチャやオペレーティングシステムに限らず、複数のプラットフォーム向けにビルドする場合: buildxを使用し、--platformフラグでビルド出力の対象プラットフォーム(例:linux/amd64、linux/arm64、darwin/amd64)を指定できます。

docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Dockerコンテナを実行します(管理者権限で実行)。
docker run -d -v c:\myems-cleaning\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-cleaning myems/myems-cleaning
  • -d:コンテナをバックグラウンドで実行し、コンテナIDを出力します。
  • -v:-vまたは--volumeを使用して、Dockerホストにまだ存在しないファイルまたはディレクトリをバインドマウントする場合、-vは自動的にエンドポイントを作成します(ディレクトリとして作成されます)。 roオプションを指定すると、バインドマウントがコンテナ内に読み取り専用でマウントされます。 v4.7.0以前のバージョンでは、/app/.envの代わりに/code/.envを使用してください。
  • --log-opt max-size=1m:ログがロールオーバーされる前の最大サイズです。正の整数に単位(k、m、g)を付加します。
  • --log-opt max-file=2:存在できるログファイルの最大数です。ログのロールオーバーによりファイル数が上限を超えた場合、最も古いファイルが削除されます。正の整数を指定します。
  • --restart:コンテナが終了した場合に適用される再起動ポリシーです。
  • --name:コンテナに名前を割り当てます。

コロンの前の絶対パスはホスト上のパスで、システムによって異なる場合があります。 コロンの後の絶対パスはコンテナ上のパスで、変更不可です。 .envファイルをバインドマウントパラメータとして渡すことで、後から設定値を変更できます。 .envファイルを変更した場合は、コンテナを再起動して変更を反映させてください。

Dockerコンテナを別のコンピュータに移行する場合:

  • イメージをtarファイルにエクスポートします。
docker save --output myems-cleaning.tar myems/myems-cleaning
  • tarファイルを別のコンピュータにコピーし、tarファイルからイメージをロードします。
docker load --input .\myems-cleaning.tar

ステップ6 myems-normalization

このセクションでは、Docker上にmyems-normalizationをインストールします。

  • ソースコードをルートディレクトリにコピーします。
cp -r myems/myems-normalization c:\
cd c:\myems-normalization
  • example.envファイルを基に.envファイルを作成します。
注意

必ず127.0.0.1 を実際のホストのIPアドレスに手動で置き換えてください。

cp example.env .env
  • ソースコードからイメージをビルドします。
docker build -t myems/myems-normalization .

ビルドを実行するユーザーのアーキテクチャやオペレーティングシステムに限らず、複数のプラットフォーム向けにビルドする場合: buildxを使用し、--platformフラグでビルド出力の対象プラットフォーム(例:linux/amd64、linux/arm64、darwin/amd64)を指定できます。

docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Dockerコンテナを実行します(管理者権限で実行)。
docker run -d -v c:\myems-normalization\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-normalization myems/myems-normalization
  • -d:コンテナをバックグラウンドで実行し、コンテナIDを出力します。
  • -v:-vまたは--volumeを使用して、Dockerホストにまだ存在しないファイルまたはディレクトリをバインドマウントする場合、-vは自動的にエンドポイントを作成します(ディレクトリとして作成されます)。 roオプションを指定すると、バインドマウントがコンテナ内に読み取り専用でマウントされます。 v4.7.0以前のバージョンでは、/app/.envの代わりに/code/.envを使用してください。
  • --log-opt max-size=1m:ログがロールオーバーされる前の最大サイズです。正の整数に単位(k、m、g)を付加します。
  • --log-opt max-file=2:存在できるログファイルの最大数です。ログのロールオーバーによりファイル数が上限を超えた場合、最も古いファイルが削除されます。正の整数を指定します。
  • --restart:コンテナが終了した場合に適用される再起動ポリシーです。
  • --name:コンテナに名前を割り当てます。

コロンの前の絶対パスはホスト上のパスで、システムによって異なる場合があります。 コロンの後の絶対パスはコンテナ上のパスで、変更不可です。 .envファイルをバインドマウントパラメータとして渡すことで、後から設定値を変更できます。 .envファイルを変更した場合は、コンテナを再起動して変更を反映させてください。

Dockerコンテナを別のコンピュータに移行する場合:

  • イメージをtarファイルにエクスポートします。
docker save --output myems-normalization.tar myems/myems-normalization
  • tarファイルを別のコンピュータにコピーし、tarファイルからイメージをロードします。
docker load --input .\myems-normalization.tar

ステップ7 myems-aggregation

このセクションでは、Docker上にmyems-aggregationをインストールします。

  • ソースコードをルートディレクトリにコピーします。
cp -r myems/myems-aggregation c:\
cd c:\myems-aggregation
  • example.envファイルを基に.envファイルを作成します。
注意

必ず127.0.0.1 を実際のホストのIPアドレスに手動で置き換えてください。

cp example.env .env
  • ソースコードからイメージをビルドします。
docker build -t myems/myems-aggregation .

ビルドを実行するユーザーのアーキテクチャやオペレーティングシステムに限らず、複数のプラットフォーム向けにビルドする場合: buildxを使用し、--platformフラグでビルド出力の対象プラットフォーム(例:linux/amd64、linux/arm64、darwin/amd64)を指定できます。

docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Dockerコンテナを実行します(管理者権限で実行)。
docker run -d -v c:\myems-aggregation\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-aggregation myems/myems-aggregation
  • -d:コンテナをバックグラウンドで実行し、コンテナIDを出力します。
  • -v:-vまたは--volumeを使用して、Dockerホストにまだ存在しないファイルまたはディレクトリをバインドマウントする場合、-vは自動的にエンドポイントを作成します(ディレクトリとして作成されます)。 roオプションを指定すると、バインドマウントがコンテナ内に読み取り専用でマウントされます。 v4.7.0以前のバージョンでは、/app/.envの代わりに/code/.envを使用してください。
  • --log-opt max-size=1m:ログがロールオーバーされる前の最大サイズです。正の整数に単位(k、m、g)を付加します。
  • --log-opt max-file=2:存在できるログファイルの最大数です。ログのロールオーバーによりファイル数が上限を超えた場合、最も古いファイルが削除されます。正の整数を指定します。
  • --restart:コンテナが終了した場合に適用される再起動ポリシーです。
  • --name:コンテナに名前を割り当てます。

コロンの前の絶対パスはホスト上のパスで、システムによって異なる場合があります。 コロンの後の絶対パスはコンテナ上のパスで、変更不可です。 .envファイルをバインドマウントパラメータとして渡すことで、後から設定値を変更できます。 .envファイルを変更した場合は、コンテナを再起動して変更を反映させてください。

Dockerコンテナを別のコンピュータに移行する場合:

  • イメージをtarファイルにエクスポートします。
docker save --output myems-aggregation.tar myems/myems-aggregation
  • tarファイルを別のコンピュータにコピーし、tarファイルからイメージをロードします。
docker load --input .\myems-aggregation.tar

ステップ8 myems-web

このセクションでは、Docker上にmyems-webをインストールします。

  • config.jsファイルを編集します。
注釈

mapboxTokenはhttps://mapbox.com で取得した後、showOnlineMapをtrueに設定してください。オンラインマップ機能を無効にしたい場合は、showOnlineMapをfalseに設定します。

cd myems/myems-web
notepad src/config.js
注意

nginx.conf内の127.0.0.1:8000 を、myems-apiの実際のホストIPアドレスとポートに置き換えてください。

cd myems/myems-web
notepad nginx.conf
  • ソースコードをルートディレクトリにコピーします。
cp -r myems/myems-web c:\
cd c:\myems-web
情報

このセクションの「npm run build」コマンドは無視しても問題ありません。このコマンドはDockerfile内に組み込まれているためです。

  • ソースコードからイメージをビルドします。
docker build -t myems/myems-web .
docker image prune -f

ビルドを実行するユーザーのアーキテクチャやオペレーティングシステムに限らず、複数のプラットフォーム向けにビルドする場合: buildxを使用し、--platformフラグでビルド出力の対象プラットフォーム(例:linux/amd64、linux/arm64、darwin/amd64)を指定できます。

docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
  • Dockerコンテナを実行します。

ホスト上でnginx.confをバインドマウントします。

docker run -d -p 80:80 -v c:\myems-web/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-web myems/myems-web
  • -d:コンテナをバックグラウンドで実行し、コンテナIDを出力します。
  • -p:コンテナのポートをホストに公開します。80:80(ホスト:コンテナ)は、コンテナのポート80(右)をホストマシンのTCPポート80(左)にバインドします。
  • -v:-vまたは--volumeを使用して、Dockerホストにまだ存在しないファイルまたはディレクトリをバインドマウントする場合、-vは自動的にエンドポイントを作成します(ディレクトリとして作成されます)。 roオプションを指定すると、バインドマウントがコンテナ内に読み取り専用でマウントされます。 v4.7.0以前のバージョンでは、/app/.envの代わりに/code/.envを使用してください。
  • --log-opt max-size=1m:ログがロールオーバーされる前の最大サイズです。正の整数に単位(k、m、g)を付加します。
  • --log-opt max-file=2:存在できるログファイルの最大数です。ログのロールオーバーによりファイル数が上限を超えた場合、最も古いファイルが削除されます。正の整数を指定します。
  • --restart:コンテナが終了した場合に適用される再起動ポリシーです。
  • --name:コンテナに名前を割り当てます。

イメージを別のコンピュータに移行する場合:

  • イメージをtarファイルにエクスポートします。
docker save --output myems-web.tar myems/myems-web
  • tarファイルを別のコンピュータにコピーし、tarファイルからイメージをロードします。
docker load --input .\myems-web.tar

インストール後

おめでとうございます!これでMyEMS Admin UIとWeb UIにログインできるようになりました。

デフォルトポート

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

サーバーアドレスが192.168.1.8である場合(実際のサーバーアドレスに置き換えてください):

デフォルトパスワード

MyEMS Admin UI

  • ユーザー名:
administrator
  • パスワード:
!MyEMS1

MyEMS Web UI

  • ユーザー名:
administrator@myems.io
  • パスワード:
!MyEMS1