Documentation

DockerでDXPにパッチを適用する

LiferayのパッチはDXPの問題を修正し、パッチツールがパッチを適用します。 Liferayは、 Docker Hub 上で、新しい フィックスパックセキュリティフィックスパックサービスパック がそれぞれあらかじめ組み込まれたイメージを提供しています。 また、LiferayはDXPコンテナにインストールする セキュリティフィックスパックホットフィックス 、および新しいパッチツールのバージョンも提供しています。

エンタープライズサブスクリプション

重要

パッチを適用する前に、必ず データベースとインストールを バックアップ してください。

フィックスパック、セキュリティフィックスパック、およびサービスパックイメージの使用

フィックスパック、セキュリティフィックスパック、およびサービスパックのイメージは、スリムバンドル基づいています。 スリムバンドルは、通常のLiferay Tomcatバンドルよりも起動が速く、フットプリントが小さくなります。 ただし、スリムバンドルに適用できるパッチは1つだけです。 したがって、これらのイメージには、次のパッチ適用の制限があります。

  • フィックスパックおよびサービスパックイメージは、ホットフィックスやセキュリティフィックスパックなどの追加パッチを1つだけ受け取ることができます。

  • セキュリティフィックスパックイメージにパッチを適用することはできません。 これらは、セキュリティフィックスパックですでにパッチが適用されたフィックスパックで構成されています。

新しいフィックスパック、セキュリティフィックスパック、またはサービスパックのイメージを使用するには、そのイメージに基づいてコンテナに移行する必要があります。 DXPコンテナから新しいパッチイメージに移行する方法は次のとおりです。

  1. 現在のDXPコンテナを停止します

  2. DXPコンテナのカスタマイズに使用したファイルをバックアップします。

    git commit -a
    
  3. Docker Hub から新しいイメージをダウンロードします。

    docker pull liferay/dxp:[tag]
    
  4. イメージに基づいて、バックアップのアーティファクトと設定ファイルを使用する新しいコンテナを作成します。

    たとえば、アーティファクトとファイルを次のようなローカルフォルダ構造に配置できます。

    [host folder]
    ├───deploy
    ├───files
    ├───patching
    └───scripts
    

    次に、runコマンドでホストフォルダをコンテナの /mnt/liferay フォルダにバインドマウントします。

    docker run ... -v [host folder path]:/mnt/liferay liferay/dxp:[tag]
    

DXPは、アーティファクトとファイルを使用して新しいコンテナで起動します。

パッチのインストール

フィックスパックイメージとサービスパックイメージは、追加のパッチの受け取りが1回に制限されています。 パッチは、ホットフィックス、セキュリティフィックスパック、またはその両方を組み合わせたパッチにすることができます。 この最後のタイプのパッチを入手するには、 ヘルプセンターのチケット を作成し、現在のフィックスパックレベルに加えて最新のセキュリティ修正と製品修正を含むパッチを要求します。

パッチ要件:

  1. コンテナに既存のパッチがない。 新しいパッチを適用する前に、既存のパッチを 元に戻す 必要があります。

  2. イメージはセキュリティフィックスパックイメージであってはなりません。これらのイメージには、すでにパッチ(セキュリティフィックスパック)が含まれています。

  3. コンテナの /mnt/liferay/patching フォルダにマップするボリュームまたはバインドマウントのフォルダ。 詳細は、コンテナへのファイルの提供を参照してください。

コンテナにパッチをインストールする方法は2つあります。

  1. 既存のコンテナへのパッチのインストール

  2. 新しいコンテナへのパッチのインストール

既存のコンテナへのインストール

既存のコンテナにパッチをインストールする手順は次のとおりです。

  1. 現在のコンテナを停止します

  2. パッチを ダウンロード して、コンテナの/mnt/liferay/patchingフォルダにマップするボリュームまたはバインドマウント内のフォルダにコピーします。

  3. コンテナを再起動します

新しいコンテナへのインストール

新しいコンテナにパッチをインストールする手順は次のとおりです。

  1. ホストフォルダと patchingというサブフォルダを作成します。

    mkdir -p [host folder]/patching
    
  2. パッチを ダウンロード して、 [host folder]/patchingフォルダにコピーします。 例:

    cp ~/[patch file] [host folder]/patching
    
  3. 現在のDXPコンテナを停止します (実行されている場合)。

  4. パッチファイルのフォルダをコンテナの/mnt/liferay/patchingフォルダにマップするバインドマウントを含むコンテナを作成します。 この例のパッチファイルは patchingという名前のフォルダにあるため、親フォルダ([host folder]) をコンテナの /mnt /liferay フォルダに バインドマウント できます。 これにより、DXPに適用するためのパッチにアクセスできるようになります。

    docker run ... -v [host folder path]:/mnt/liferay liferay/dxp:[tag]
    

    注釈

    バインドマウントを指定する方法については、 コンテナへのファイルの提供 を参照してください。

パッチツールがパッチをインストールし、DXPが起動します。

重要

パッチングツールが [patchfile]はパッチングツールバージョン [x.y.z]と互換性がありません、と表示した場合は、最新のパッチングツールをインストールしてください。 詳細は、 Installing the Patching Tool を参照してください。

パッチを元に戻す

コンテナからパッチを元に戻したり、パッチを適用したコンテナに別のパッチをインストールしたりする場合は、コンテナを削除して新しいコンテナを作成する必要があります。

  1. コンテナを停止します

    docker stop [container]
    
  2. コンテナのアーティファクトとファイルをバックアップします。

  3. コンテナを削除します。

    docker rm [container]
    
  4. 以前に使用したdocker run引数を使用して、同じイメージまたは互換性のあるフィックスパックレベルを持つイメージから新しいコンテナを作成します。 ボリュームまたは バインドマウント を介して、必要なパッチを適用します。

パッチツールの更新

現在のパッチツールがインストールするパッチと互換性がない場合、パッチツールには次のメッセージが報告されます: [patch file] is incompatible with Patching Tool version [x.y.z]x.y.zはツールのメジャー、マイナー、およびマクロのバージョン番号です)。

ここでは、新しいパッチツールのバージョンをインストールする方法を説明します。

  1. カスタマーポータル . から最新のパッチツールをダウンロードします。

  2. パッチツールのZIPファイル名の形式がpatching-tool-x.y.z.zipでない場合は、その形式を使用するよう名前を変更します。 例:

    mv patching-tool.zip patching-tool-2.0.15.zip
    
  3. ホットフィックスとセキュリティフィックスパックがインストールされる のと同じ方法で、コンテナの /mnt/liferay/patching フォルダを介してパッチツールのZIPファイルをコンテナにインストールします。

コンテナを再起動するか新しいコンテナを実行すると、コンテナのエントリポイントによって新しいパッチツールがインストールされます。

パッチのためのデータベースのアップグレード

パッチでデータベースのアップグレードが必要な場合は、コンテナ化されていない環境でデータベースアップグレードツールを使用してアップグレードする必要があります。

  1. 使用しているLiferayのバージョンのLiferay Tomcat Bundleのインストールをインストールします。

  2. インストールにパッチを適用します。 詳細は、Patching Liferayを参照してください。

  3. データベースアップグレードツールを使用してデータベースをアップグレードします。 詳細は、 データベースアップグレードツールの使用を参照してください。

データベースがアップグレードされたら、そのデータベースを使用するコンテナを実行します。