Docker プラットフォームへの GlassFish アプリケーションのデプロイ: Amazon Linux 2 への移行パス - AWS Elastic Beanstalk

Docker プラットフォームへの GlassFish アプリケーションのデプロイ: Amazon Linux 2 への移行パス

このチュートリアルの目的は、事前設定された Docker GlassFish プラットフォーム (Amazon Linux AMI に基づく) を使用しているお客様に、Amazon Linux 2 への移行パスを示すことです。GlassFish アプリケーションを Amazon Linux 2 に移行するには、GlassFish とアプリケーションコードを Amazon Linux 2 Docker イメージにデプロイします。

このチュートリアルでは、AWS Elastic Beanstalk Docker プラットフォームを使用して、Java EE GlassFish アプリケーションサーバーに基づくアプリケーションを Elastic Beanstalk 環境にデプロイする方法について説明します。

Docker イメージを構築する 2 つの方法を示します。

  • シンプル – GlassFish アプリケーションのソースコードを提供し、Elastic Beanstalk 環境のプロビジョニングの一環として Docker イメージを構築して実行します。この方法は、設定が簡単ですが、インスタンスのプロビジョニング時間が長くなります。

  • アドバンスト – アプリケーションコードと依存関係を含むカスタム Docker イメージを作成し、Elastic Beanstalk に提供して、お客様の環境で使用します。この方法は少し複雑ですが、お客様の環境でのインスタンスのプロビジョニング時間が短くなります。

前提条件

このチュートリアルでは、Elastic Beanstalk の基本的なオペレーション、Elastic Beanstalk コマンドラインインターフェイス (EB CLI) の使用、および Docker についてある程度の知識があることを前提としています。このチュートリアルを実行するには、ローカルに Docker がインストールされている必要があります。Docker のインストールの詳細については、Docker インストールガイドを参照してください。

まだ起動していない場合は、「Elastic Beanstalk を使用して開始する」の指示に従って、最初の Elastic Beanstalk 環境を起動します。このチュートリアルでは EB CLI を使用しますが、Elastic Beanstalk コンソールを使用して環境を作成し、アプリケーションをアップロードすることもできます。Docker 環境の設定の詳細については、「Docker の設定」を参照してください。

シンプルの例: アプリケーションコードを提供する

これは、GlassFish アプリケーションをデプロイする簡単な方法です。このチュートリアルに含まれる Dockerfile と共に、アプリケーションのソースコードを用意します。Elastic Beanstalk は、アプリケーションと GlassFish ソフトウェアスタックを含む Docker イメージを構築します。その後、Elastic Beanstalk は環境インスタンスでイメージを実行します。

この方法の問題は、Elastic Beanstalk が環境のインスタンスを作成するたびに Docker イメージをローカルに構築することです。イメージの構築により、インスタンスのプロビジョニング時間が長くなります。この影響は、初期環境の作成に限らず、スケールアウトアクション中にも発生します。

GlassFish アプリケーション例で環境を起動するには

  1. アプリケーション例 docker-glassfish-al2-v1.zip をダウンロードし、.zip ファイルを開発環境のディレクトリに展開します。

    ~$ curl https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-glassfish-al2-v1.zip --output docker-glassfish-al2-v1.zip ~$ mkdir glassfish-example ~$ cd glassfish-example ~/glassfish-example$ unzip ../docker-glassfish-al2-v1.zip

    ディレクトリ構造は以下のようになります。

    ~/glassfish-example |-- Dockerfile |-- Dockerrun.aws.json |-- glassfish-start.sh |-- index.jsp |-- META-INF | |-- LICENSE.txt | |-- MANIFEST.MF | `-- NOTICE.txt |-- robots.txt `-- WEB-INF `-- web.xml

    以下のファイルは、お客様の環境で Docker コンテナを構築して実行するために重要です。

    • Dockerfile – アプリケーションと必要な依存関係を含むイメージを構築するために Docker が使用する手順を提供します。

    • glassfish-start.sh – アプリケーションを起動するために Docker イメージが実行するシェルスクリプト。

    • Dockerrun.aws.json – GlassFish アプリケーションサーバーのログをログファイルリクエストに含めるためのログ記録キーを提供します。GlassFish ログに関心がない場合は、このファイルを省略できます。

  2. Elastic Beanstalk にデプロイするローカルディレクトリを設定します。

    ~/glassfish-example$ eb init -p docker glassfish-example
  3. (オプション) eb local run コマンドを使用して、コンテナを構築し、ローカルで実行します。

    ~/glassfish-example$ eb local run --port 8080
    注記

    eb local コマンドの詳細については、「eb local」を参照してください。このコマンドは Windows ではサポートされていません。または、docker build コマンドと docker run コマンドを使用してコンテナを構築して実行することもできます。詳細については、Docker ドキュメントを参照してください。

  4. (オプション) コンテナが実行しているときに、eb local open コマンドを使用して、ウェブブラウザでアプリケーションを表示します。または、ウェブブラウザで http://localhost:8080/ を開きます。

    ~/glassfish-example$ eb local open
  5. eb create コマンドを使用して、環境を作成し、アプリケーションをデプロイします。

    ~/glassfish-example$ eb create glassfish-example-env
  6. 環境が起動したら、eb open コマンドを使用してウェブブラウザで表示します。

    ~/glassfish-example$ eb open

アプリケーション例を使用し終えたら、環境を終了し、関連するリソースを削除します。

~/glassfish-example$ eb terminate --all

アドバンストの例: 事前に構築された Docker イメージを提供する

これは、GlassFish アプリケーションをデプロイするためのより高度な方法です。最初の例に基づいて、アプリケーションコードと GlassFish ソフトウェアスタックを含む Docker イメージを作成し、そのイメージを Docker Hub にプッシュします。この 1 回限りのステップを完了したら、カスタムイメージに基づいて Elastic Beanstalk 環境を起動できます。

環境を起動して Docker イメージを提供すると、環境内のインスタンスはこのイメージを直接ダウンロードして使用するため、Docker イメージを構築する必要はありません。したがって、インスタンスのプロビジョニング時間が短くなります。

注記

以下のステップでは、一般利用可能な Docker イメージを作成します。

事前に構築された GlassFish アプリケーションの Docker イメージで環境を起動するには

  1. 前のシンプルの例と同様に、アプリケーション例 docker-glassfish-al2-v1.zip をダウンロードして展開します。その例を完了済みの場合は、既存のディレクトリを使用できます。

  2. Docker イメージを構築し、Docker Hub にプッシュします。

    ~/glassfish-example$ docker build -t docker-username/beanstalk-glassfish-example:latest . ~/glassfish-example$ docker push docker-username/beanstalk-glassfish-example:latest
    注記

    イメージをプッシュする前に、docker login を実行しなければならないことがあります。

  3. 追加のディレクトリを作成します。

    ~$ mkdir glassfish-prebuilt ~$ cd glassfish-prebuilt
  4. 以下の例を Dockerrun.aws.json という名前のファイルにコピーします。

    ~/glassfish-prebuilt/Dockerrun.aws.json

    { "AWSEBDockerrunVersion": "1", "Image": { "Name": "docker-username/beanstalk-glassfish-example" }, "Ports": [ { "ContainerPort": 8080, "HostPort": 8080 } ], "Logging": "/usr/local/glassfish5/glassfish/domains/domain1/logs" }
  5. Elastic Beanstalk にデプロイするローカルディレクトリを設定します。

    ~/glassfish-prebuilt$ eb init -p docker glassfish-prebuilt$
  6. (オプション) eb local run コマンドを使用して、コンテナをローカルで実行します。

    ~/glassfish-prebuilt$ eb local run --port 8080
  7. (オプション) コンテナが実行しているときに、eb local open コマンドを使用して、ウェブブラウザでアプリケーションを表示します。または、ウェブブラウザで http://localhost:8080/ を開きます。

    ~/glassfish-prebuilt$ eb local open
  8. eb create コマンドを使用して、環境を作成し、Docker イメージをデプロイします。

    ~/glassfish-prebuilt$ eb create glassfish-prebuilt-env
  9. 環境が起動したら、eb open コマンドを使用してウェブブラウザで表示します。

    ~/glassfish-prebuilt$ eb open

アプリケーション例を使用し終えたら、環境を終了し、関連するリソースを削除します。

~/glassfish-prebuilt$ eb terminate --all