クライアント拡張機能のパッケージ化
Liferayセルフホスト Liferay SaaS Liferay PaaS
Liferay DXP 7.4
クライアント拡張プロジェクトは、 Liferayユニバーサルファイルフォーマットアーカイブ (LUFFA) と呼ばれる、 .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
バッチ フォルダーは、 バッチ クライアント拡張プロジェクトでのみ必要です。
バッチ クライアント拡張機能のデータ エンティティは、ビルドされた LUFFA の batch/ フォルダー内の *.batch-engine-data.json ファイルです。 これらのファイルは、 batch/ フォルダ内の任意のフォルダ構造に置くことができます。
無制限の深さのディレクトリ構造を使用して、ルート レベル batch/ ディレクトリの下に、任意の数の *.batch-engine-data.json ファイルを配置できます。 プロジェクトの client-extension.yaml ファイルでバッチ拡張機能を定義しなかった場合、Liferay はこれらのファイルを無視します。
*.client-extension-config.json
各 LUFFA には少なくとも 1 つの *.client-extension-config.json ファイルが必要です。
LUFFA のルートには、1 つ以上の *.client-extension-config.json (OSGi 構成リソース形式) ファイルがあります。 これらは、クライアント拡張機能がアーカイブ内でどのように構造化されるかを定義します。 通常、これらのファイルは、 client-extension.yaml ファイルの内容に基づいてビルド プロセス中に生成されます。 YAML から JSON への変換は Liferay ワークスペース プラグインによって指定されており、1:1 マッピングではありません。
Dockerfile
各 LUFFA には少なくとも 1 つの Dockerfile が必要です。
ビルド プロセスでは、 Dockerfile が バッチ、 構成、および フロントエンド クライアント拡張機能用に自動的に生成され、パッケージ化されます。
プロジェクトに、 マイクロサービス クライアント拡張用の Dockerfile を提供する必要があります。 これをプロジェクトのルートに追加すると、プロジェクトをビルドするときに LUFFA にコピーされます。
Dockerfile がプロジェクト内のマイクロサービス クライアント拡張機能を実行できることを確認します。 たとえば、 Dockerfile では、マイクロサービスのコードに必要な特定のツールのインストールが必要になる場合があります。
環境変数など、他の方法で Docker コンテナを構成することもできます。 たとえば、コンテナの JVM (クラウド環境で実行されるクライアント拡張機能に必要な場合があります) を LIFERAY_JAR_RUNNER_JAVA_OPTS 変数で設定できます。
クライアント拡張機能を手動でパッケージ化する
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 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
}
構成クライアント拡張 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
静的 ディレクトリは、 フロントエンドクライアント拡張プロジェクトでのみ必要です。
ビルドされた LUFFA のルート レベル static/ ディレクトリには、任意の数の静的リソース ファイルを配置できます。 static/ フォルダ内では任意のフォルダ構造を使用します。 プロジェクトの client-extension.yaml ファイルにフロントエンドクライアント拡張機能が定義されていない場合、これらのファイルは無視されます。
マイクロサービスリソース
他の必要なファイルと競合しない限り、マイクロサービス クライアント拡張プロジェクト用にビルドされた LUFFA に追加のリソースを含めることができます。