クライアント拡張機能のパッケージ化
Liferay Experience CloudおよびLiferay DXP 7.4+(セルフホスティング)
クライアント拡張プロジェクトは、 Liferay Universal File Format Archives(LUFFAs) と呼ばれる展開可能なアーカイブとして構築され、 .zip
という拡張子を持ちます。 各LUFFAは、特定の構造を持ち、特定のコンポーネントファイルを定義しており、プロジェクトによって提供されない場合は自動的に生成されます。 Liferay workspaceは、クライアント拡張プロジェクトをビルドする際にパッケージ化します。 パッケージングの仕組みを理解することは、 クライアントエクステンションを組み立てる あるいは、別のプロセスでLUFFAを作成する場合に重要です。
これはLUFFAの構造です:
.
├── batch
│ └── **/*.batch-engine-data.json
├── *.client-extension-config.json
├── Dockerfile
├── LCP.json
├── static
│ └── **/*
├── WEB-INF
│ └── liferay-plugin-package.properties
└── [microservice resources]
batch
batch`フォルダは、バッチクライアント拡張プロジェクトによってのみ必要とされます。
バッチクライアント拡張のデータエンティティは、ビルドしたLUFFAの batch/
フォルダ内の *.batch-engine-data.json
ファイルです。 これらのファイルは、 batch/
フォルダ内の任意のフォルダ構成にすることができます。
*.batch-engine-data.json
ファイルを、ルートレベル batch/
ディレクトリの下に、深さ無制限のディレクトリ構造でいくつでも配置することができます。 プロジェクトの client-extension.yaml
ファイルでバッチ拡張機能を定義しなかった場合、Liferay はこれらのファイルを無視します。
*.client-extension-config.json
各LUFFAに最低1つの*.client-extension-config.json
ファイルが必要である。
LUFFAのルートには、1つ以上の *.client-extension-config.json
( OSGi Configuration Resource Format ) ファイルがあります。 クライアントエクステンションがアーカイブ内でどのように構成されるかを定義するものです。 通常、これらのファイルは、 client-extension.yaml
ファイルの内容に基づいて、ビルドプロセス中に生成されます。 YAML から JSON への変換は、 Liferay workspace plugin で指定されており、1:1 対応ではありません。
Dockerfile
各LUFFAに最低1つのDockerfileが必要です。
ビルドプロセスでは、 バッチ用、 設定用、 フロントエンド クライアント拡張用の Dockerfile
を自動的に生成しパッケージ化します。
[マイクロサービスクライアント拡張のための Dockerfile
をプロジェクトで提供する必要があります](./microservice-client-extensions.md). これをプロジェクトのルートに追加すると、プロジェクトのビルド時にLUFFAにコピーされます。 Dockerfile
が、プロジェクトのマイクロサービスクライアント拡張を実行できることを確認してください。 例えば、 Dockerfile
は、マイクロサービスのコードを実行するために必要な特定のツールをインストールする必要があるかもしれません。
クライアント拡張機能を手動でパッケージ化する
LUFFAを自分でパッケージングする場合、バッチ、設定、フロントエンドクライアント拡張には、特定の Dockerfile
の規約が必要です。 Liferayは以下の画像でそれらを提供しています。
バッチクライアント拡張の場合は、 liferay/batch:latest
イメージを使用してください:
FROM liferay/batch:latest
COPY /batch /batch
コンフィギュレーションクライアントの拡張については、 liferay/noop:latest
イメージを使用してください:
FROM liferay/noop:latest
フロントエンドのクライアントエクステンションには、 liferay/caddy:latest
イメージを使用してください:
FROM liferay/caddy:latest
COPY static/ /public_html/
マイクロサービスクライアントエクステンションの Dockerfile
は、お客様の特定のコンテキストに完全に依存するため、事前に設定されたイメージを提供することができません。
LCP.json
各LUFFAにはLCP.json
ファイルが必要です。
ビルドプロセスでは、 バッチ用、 設定用、 フロントエンド用の LCP.json
ファイルを自動生成しパッケージ化します。
マイクロサービスクライアント拡張のために、プロジェクト内にLCP.json
ファイルを用意する必要があります。これをプロジェクトのルートに追加すると、プロジェクトがビルドされる際にLUFFAにコピーされます。このLCP.json
ファイルは、Liferay Experience Cloud にデプロイされた際にマイクロサービスに使用されるコンテナを構成します。
LUFFAを自分でパッケージングする場合、各クライアント拡張は、その LCP.json
に対して、異なる仕様の提案を持っています:
クライアント拡張 | 重要な資源を必要とする | 種類 | メモ |
---|---|---|---|
バッチ | ✘ | 仕事 |
|
設定 | ✘ | 仕事 |
|
フロントエンド | ✘ | デプロイ |
|
バッチクライアント拡張の例 LCP.json
{
"cpu": 0.2,
"env": {
"LIFERAY_BATCH_OAUTH_APP_ERC": "__batch.oAuthApplicationHeadlessServer__"
},
"id": "__CLIENT_EXTENSION_ID__",
"kind": "Job",
"memory": 50,
"scale": 1
}
構成例 Client Extension LCP.json
{
"cpu": 0.1,
"id": "__CLIENT_EXTENSION_ID__",
"kind": "Job",
"memory": 10,
"scale": 1
}
フロントエンドクライアント拡張の例 LCP.json
{
"cpu": 0.2,
"id": "__CLIENT_EXTENSION_ID__",
"kind": "Deployment",
"livenessProbe": {
"httpGet": {
"path": "/",
"port": 80
}
},
"loadBalancer": {
"cdn": true,
"targetPort": 80
},
"memory": 50,
"readinessProbe": {
"httpGet": {
"path": "/",
"port": 80
}
},
"scale": 1
}
LCP.json による設定 をご参照ください。
static
static`ディレクトリは、フロントエンドクライアント拡張プロジェクトによってのみ必要とされます。
ビルドしたLUFFAのルートレベル static/
ディレクトリに、任意の数の静的リソースファイルを配置することができます。 static/
フォルダ内は、任意のフォルダ構成でご利用ください。 これらのファイルは、プロジェクトの client-extension.yaml
ファイルで定義されているフロントエンドクライアント拡張がない場合、無視されます。
マイクロサービス・リソース
他の必須ファイルと競合しない限り、マイクロサービスクライアント拡張プロジェクトのビルドLUFFAに追加のリソースを含めることができます。