JPiereをdocker-composeで試してみる
JPiere(ジェイピエール)とはオープンソースのERP iDempiereの日本商習慣対応ディストリビューションです。GPLv2ライセンスのもと、その機能のほとんどを無償で使えるERPパッケージのようなので手っ取り早く、ローカルで使うためにdocker-composeで試してみます。
急いでいる人
JPiereサーバのDockerコンテナをビルドして、docker-compose
で起動。
githubからDockerfile、docker-compose.ymlなどを取得
git clone https://github.com/madilloar/PRJ_JPiere.git
Dockerコンテナのビルド
docker build ./ -f DockerJpiere -t jpiere:8.21
ビルドに失敗したときにコンテナに入って原因追及。
docker run -it --user root --name jpiere {コンテナID} bash -p
docker-composeで起動
Corei5 8MB Windows10 WSL2のdocker環境で起動までに10分程度かかる。
docker-compose up -d
起動状況をログ確認
docker logs -f jpiere_idempiere_1
次のようなメッセージが最後に出ていたら起動完了。
略
11:59:41.010 PackInApplicationActivator.processFilePath: *** Creating list from folder migration/i4.1z [93]
11:59:41.011 PackInApplicationActivator.processFilePath: *** Creating list from folder migration/i7.1z [93]
11:59:41.016 AbstractActivator.setSummary: No zip files to process [93]
ログに次のようなエラーが出ていても問題なし
バージョンエラーメッセージの例
19:02:52.425-----------> DB.isBuildOK: Build Version Error
The program assumes build version 8.2.0.202101020630, but database has build version ${env.ADEMPIERE_VERSION} 20080428-1232.
This is likely to cause hard to fix errors.
Please contact administrator. [1]
次のURLを参考。【iDempiere Lab】サーバ起動時のDBビルドバージョンエラーについて
このDB.javaのisBuildOK()メソッド内では、文字列情報を比較("Build DB"の値と"Build Cl"の値を比較)して異なっていたらこのメッセージが出力されるようにしているだけで、実際にデータベースのスキーマ情報を精査しているわけではありません。
バリデーションエラーメッセージの例
java.lang.Exception: Failed to load model validator class jpiere.plugin.groupware.base.JPierePluginGroupwareModelValidator
at org.adempiere.base.DefaultModelValidatorFactory.newModelValidatorInstance
java.lang.Exception: Failed to load model validator class jpiere.base.plugin.org.adempiere.base.JPiereBankStatementLineModelValidator
at org.adempiere.base.DefaultModelValidatorFactory.newModelValidatorInstance(DefaultModelValidatorFactory.java:64)
以下数件。
次のURLを参考。JPiereコンフィギュレーションズの使用上の注意
JPiere ベースプラグインではモデルバリデータを使用しています。モデルバリデータに設定されているクラスが存在しないとエラーになりますので、JPiereベースプラグインを使用しない場合には、使用しないモデルバリデータを非アクティブにする必要があります。AD_ModelValidatorテーブルの下記の名称(Name)のデータをSQLで非アクティブ(IsActive='N')にして下さい。
ログイン
次のURLでログインします。
ユーザとパスワード
参考URL:JPiereへのログイン
Dockerコマンドメモ
実行中のコンテナに入る
docker exec -it --user root {コンテナ名} bash -p
docker-compose 起動、ログ確認、停止、コンテナ終了
docker-compose up -d
docker log -f {コンテナ名}
docker-compose stop
docker-compose down
止まってしまったコンテナに入って原因追及
docker commit {問題のコンテナID} {新たなコンテナ名}
docker run --rm -it {新たなコンテナ名} sh
はまったところ
docker-composeで試す前に、手動でインストールを試そうとしてはまったこと。
shellの改行文字がCRLF
OSDN > Find Software > Office/Business > CRM > JPiere > Download File List > Package JPiere Install Package > Release JPiere82 - 20210101からインストール用のzipとPostgreSQLに登録するdmpファイルをダウンロードして、手順に従って、console-setup.shを動かしたのですが、
$ ./console-setup.sh
-bash: ./console-setup.sh: /bin/sh^M: bad interpreter: No such file or directory
となってしまいました。shellファイルの改行文字がCRLFになっている。
気になってgrepしたら軒並み改行文字がCRLF。手順では、sh console-setup.sh
となっているので、改行文字がCRLFでもよいのだけれど、気持ち悪いので、LFに変える。
$ find . -type f -name '*.sh' | xargs file | grep CRLF | awk -F: '{print $1}' | xargs dos2unix
実行可能ファイルの実行権限がついていない
$ ./console-setup.sh
Setup idempiere Server
: not foundup.sh: 4:
console-setup.sh: 6: ./idempiere: Permission denied
略
改行文字同様、他の実行可能ファイル、shellに実行権限がついていない。
$ chmod u+x idempiere
$ find . -type f -name '*.sh' | xargs chmod u+x
JPiereサーバとPostgreSQLサーバをそれぞれを起動してみる
前提
上記DockerJpiereファイルでDockerコンテナを作成済のこと。
JPiereとPostgresqlをつなぐdocker networkを作成
docker network create jpiere_net
PostgreSQLサーバを起動
docker run -d --name postgres --net jpiere_net -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres:12
JPiereサーバを起動
docker run -it --name jpiere -p 8080:8080 --net jpiere_net \
-e DB_HOST=postgres \
-e DB_PORT=5432 \
-e DB_NAME=idempiere \
-e DB_USER=adempiere \
-e DB_PASS=adempiere \
-e DB_ADMIN_PASS=postgres \
jpiere:8.21
JPiereサーバとPostgreSQLサーバがネットワークにつながっているか確認
docker network inspect jpiere_net
参考URL
https://hub.docker.com/r/idempiereofficial/idempiere
https://github.com/idempiere/idempiere-docker
https://mebee.info/2020/11/29/post-17806/
https://www.compiere-distribution-lab.net/jpiere-lab/install/jpiere7-1/