[17.0.0.3 and later]

アプリケーション用の Docker コンテナーの作成

Docker コンテナーを作成し、それを、IBM Cloud Private によって参照されるレジストリーにプッシュする必要があります。

このタスクについて

Docker Hub では、正式な WebSphere® Application Server for Developers Liberty イメージを使用します。

このリポジトリー内では複数のイメージが使用可能です。beta のタグを持つイメージには、毎月のベータのインストール・アーカイブの内容が含まれています。その他のイメージはすべて、一般出荷可能な最新のフィックスパックに基づいています。

kernel イメージには、Liberty カーネルだけが含まれており、追加のランタイム・フィーチャーは含まれていません。このイメージを使用するか、または特定のアプリケーションに必要なフィーチャーのみを含むカスタムビルトのイメージを使用できます。例えば、以下の Dockerfile サンプル・スニペットは、このイメージから開始し、アプリケーションに必要なフィーチャーをリストする server.xml ファイルにコピーし、次に installUtility コマンドを使用してオンライン・リポジトリーからそれらのフィーチャーをダウンロードします。
FROM websphere-liberty:kernel
COPY server.xml /config/
RUN installUtility install --acceptLicense defaultServer

webProfile6 イメージには、Java EE6 Web Profile 準拠に必要なフィーチャーが含まれています。また、このイメージは、内容を、ランタイム JAR ファイルを使用してダウンロード可能なフィーチャー (特に、OSGi アプリケーションに必要なフィーチャー) と合致させるためにさらなるフィーチャーを取り入れます。

webProfile7 イメージには、Java EE7 Web Profile 準拠に必要なフィーチャーが含まれています。javaee7 イメージは、このイメージを拡張し、Java EE7 Full Platform 準拠に必要なフィーチャーを追加します。javaee7 イメージには、latest のタグも付いています。

webProfile6webProfile7、および javaee7 のすべてのイメージには、代表的な実動シナリオに使用される共通のフィーチャー・セットも含まれています。以下のフィーチャーが、この共通のフィーチャー・セットを形成しています。
  • appSecurity-2.0
  • collectiveMember-1.0
  • localConnector-1.0
  • ldapRegistry-3.0
  • monitor-1.0
  • requestTiming-1.0
  • restConnector-1.0
  • sessionDatabase-1.0

手順

  1. サーバー・スタンザ内に以下のエレメントを追加して、コンテナーの外部から HTTP 接続を受け入れるように server.xml ファイルを更新します。
    <httpEndpoint host="*" httpPort="9080" httpsPort="-1"/>
  2. sample-one-container などの Eclipse プロジェクトを作成します。このプロジェクト内に、Dockerfile と、server.xml ファイルの WAR ファイルを含めます。 以下の Dockerfile の例を参照してください。
    FROM library/websphere-liberty:webProfile7
    Add sample-one.war /opt/ibm/wlp/usr/servers/defaultServer/apps
    COPY server.xml /opt/ibm/wlp/usr/servers/defaultServer/
    ENV LICENSE accept

    この Dockerfile 内で、Liberty イメージは、WAR ファイルを drop-ins ディレクトリーにコピーすることによってカスタマイズされています。それによって、アプリケーションがインストールされ、サーバーが開始されます。server.xml は、コンテナー外部からの HTTP 接続を許可するように、変更された server.xml によって置換されます。ライセンスも受け入れられます。

  3. server.xml と WAR ファイルを一緒にこのプロジェクト内に収集し、Docker イメージを作成するために docker ビルドを実行する準備をします。
  4. コマンド・ラインを開き、現行ディレクトリーを sample-one-container プロジェクト・ディレクトリーに設定し、Docker ビルドを実行します。 これは、Liberty Docker ハブ・イメージで始まり、アプリケーションおよび対応する server.xml 構成を追加する、カスタム Docker ビルドです。次の例を参照してください。この例は、正常なビルドの実行を示しています。
    arthurs-mbp:docker-hub arthur$ docker build .
    Sending build context to Docker daemon  957.4kB
    Step 1/4 : FROM websphere-liberty:kernel
     ---> 3fd79ff460ff
    Step 2/4 : COPY server.xml /config/
     ---> Using cache
     ---> a0e43965425f
    Step 3/4 : COPY airlines.war /config/apps/
     ---> Using cache
     ---> dfc6aee86df5
    Step 4/4 : RUN installUtility install --acceptLicense defaultServer
     ---> Using cache
     ---> d5ab21decab4
    Successfully built d5ab21decab4
    arthurs-mbp:docker-hub arthur$
  5. Docker ユーザー ID とパスワードを使用してログインします。 Docker Hub にログオンすると、次の例に似た出力が表示されます。
    arthurs-mbp:docker-hub arthur$ docker login
    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: arthurdm
    Password:
    Login Succeeded
    arthurs-mbp:docker-hub arthur$
  6. ビルドが終了したら、イメージのタグを作成します。 このタグは、レジストリー内でこのイメージの参照に使用される名前を示しています。以下の例を参照してください。
    arthurs-mbp:docker-hub arthur$ docker tag d5ab21decab4 arthurdm/websphere-liberty
  7. イメージを Docker Hub リポジトリーにプッシュし、ダウンロードして実行できるようにイメージを公開します。 以下の例を参照してください。
    arthurs-mbp:docker-hub arthur$ docker push arthurdm/websphere-liberty
    The push refers to a repository [docker.io/arthurdm/websphere-liberty]
    c2eefa54fcc7: Layer already exists 
    09fa033b42e3: Layer already exists 
    753266ce94a2: Layer already exists 
    0a76debd7d35: Layer already exists 
    d86dd55017f1: Layer already exists 
    d5e2acba7cce: Layer already exists 
    eefb3f013a83: Layer already exists 
    28fca5e92849: Layer already exists 
    3e60706b7714: Layer already exists 
    1a39a1088d6e: Layer already exists 
    73e5d2de6e3e: Layer already exists 
    08f405d988e4: Layer already exists 
    511ddc11cf68: Layer already exists 
    a1a54d352248: Layer already exists 
    9d3227c1793b: Layer already exists 
    latest: digest: sha256:9e41f2a269360fbd0ff926434ab4df38cce49aa83442b1a38eaf13049cb164b2 size: 3453
    arthurs-mbp:docker-hub arthur$

タスクの結果

Docker Hub リポジトリーにプッシュした Docker コンテナーを作成しました。

次のタスク

アプリケーションをリポジトリーにプッシュした後、イメージ arthurdm/websphere-liberty を指定することによって IBM Cloud Private 環境にアプリケーションをインストールします。このインストールは、Helm chart を使用して実行されます。


トピックのタイプを示すアイコン タスク・トピック

ファイル名: twlp_icp_docker.html