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 アプリケーションサーバー
Docker イメージを構築する 2 つの方法を示します。
-
シンプル – GlassFish アプリケーションのソースコードを提供し、Elastic Beanstalk 環境のプロビジョニングの一環として Docker イメージを構築して実行します。この方法は、設定が簡単ですが、インスタンスのプロビジョニング時間が長くなります。
-
アドバンスト – アプリケーションコードと依存関係を含むカスタム Docker イメージを作成し、Elastic Beanstalk に提供して、お客様の環境で使用します。この方法は少し複雑ですが、お客様の環境でのインスタンスのプロビジョニング時間が短くなります。
前提条件
このチュートリアルでは、Elastic Beanstalk の基本的なオペレーション、Elastic Beanstalk コマンドラインコマンドラインインターフェイス (EB CLI) および Docker についてある程度の知識があることを前提としています。まだ起動していない場合は、Elastic Beanstalk を使用して開始する の指示に従って、最初の Elastic Beanstalk 環境を起動します。このチュートリアルでは EB CLI を使用しますが、Elastic Beanstalk コンソールを使用して環境を作成し、アプリケーションをアップロードすることもできます。
このチュートリアルに従うには、以下の Docker コンポーネントも必要です。
-
Docker の稼働中のローカルインストール。詳細については、Docker ドキュメントウェブサイトの「Get Docker
」を参照してください。 -
Docker Hub へのアクセス。Docker ハブにアクセスするには、Docker ID を作成する必要があります。詳細については、Docker ドキュメントウェブサイトの「Share the application
」を参照してください。
Elastic Beanstalk プラットフォームでの Docker 環境の設定の詳細については、この同じ章の「Docker の設定」を参照してください。
シンプルの例: アプリケーションコードを提供する
これは、GlassFish アプリケーションをデプロイする簡単な方法です。このチュートリアルに含まれる Dockerfile
と共に、アプリケーションのソースコードを用意します。Elastic Beanstalk は、アプリケーションと GlassFish ソフトウェアスタックを含む Docker イメージを構築します。その後、Elastic Beanstalk は環境インスタンスでイメージを実行します。
この方法の問題は、Elastic Beanstalk が環境のインスタンスを作成するたびに Docker イメージをローカルに構築することです。イメージの構築により、インスタンスのプロビジョニング時間が長くなります。この影響は、初期環境の作成に限らず、スケールアウトアクション中にも発生します。
GlassFish アプリケーション例で環境を起動するには
-
アプリケーション例
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 ログに関心がない場合は、このファイルを省略できます。
-
-
Elastic Beanstalk にデプロイするローカルディレクトリを設定します。
~/glassfish-example$
eb init -p docker
glassfish-example
-
(オプション) eb local run コマンドを使用して、コンテナを構築し、ローカルで実行します。
~/glassfish-example$
eb local run --port 8080
注記
eb local コマンドの詳細については、「eb local」を参照してください。このコマンドは Windows ではサポートされていません。または、docker build コマンドと docker run コマンドを使用してコンテナを構築して実行することもできます。詳細については、「Docker ドキュメント
」を参照してください。 -
(オプション) コンテナが実行しているときに、eb local open コマンドを使用して、ウェブブラウザでアプリケーションを表示します。または、ウェブブラウザで http://localhost:8080/
を開きます。 ~/glassfish-example$
eb local open
-
eb create コマンドを使用して、環境を作成し、アプリケーションをデプロイします。
~/glassfish-example$
eb create
glassfish-example-env
-
環境が起動したら、eb open コマンドを使用してウェブブラウザで表示します。
~/glassfish-example$
eb open
アプリケーション例を使用し終えたら、環境を終了し、関連するリソースを削除します。
~/glassfish-example$
eb terminate --all
アドバンストの例: 事前に構築された Docker イメージを提供する
これは、GlassFish アプリケーションをデプロイするためのより高度な方法です。最初の例に基づいて、アプリケーションコードと GlassFish ソフトウェアスタックを含む Docker イメージを作成し、そのイメージを Docker Hub にプッシュします。この 1 回限りのステップを完了したら、カスタムイメージに基づいて Elastic Beanstalk 環境を起動できます。
環境を起動して Docker イメージを提供すると、環境内のインスタンスはこのイメージを直接ダウンロードして使用するため、Docker イメージを構築する必要はありません。したがって、インスタンスのプロビジョニング時間が短くなります。
メモ
以下のステップでは、一般利用可能な Docker イメージを作成します。
ローカルの Docker インストールから Docker コマンドと、Docker Hub の資格情報を使用します。詳細については、前のセクション「前提条件」を参照してください。
事前に構築された GlassFish アプリケーションの Docker イメージで環境を起動するには
-
前のシンプルの例と同様に、アプリケーション例
docker-glassfish-al2-v1.zip
をダウンロードして展開します。その例を完了済みの場合は、既存のディレクトリを使用できます。 -
Docker イメージを構築し、Docker Hub にプッシュします。
docker-id
に、あなたの Docker ID を入力して Docker Hub にサインインします。~/glassfish-example$
docker build -t
~/glassfish-example$docker-id
/beanstalk-glassfish-example:latest .docker push
docker-id
/beanstalk-glassfish-example:latest注記
イメージをプッシュする前に、docker login を実行しなければならないことがあります。パラメータなしでコマンドを実行すると、Docker Hub の資格情報の入力を求められます。
-
追加のディレクトリを作成します。
~$
mkdir glassfish-prebuilt
~$cd glassfish-prebuilt
-
以下の例を
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" } -
Elastic Beanstalk にデプロイするローカルディレクトリを設定します。
~/glassfish-prebuilt$
eb init -p docker
glassfish-prebuilt$
-
(オプション) eb local run コマンドを使用して、コンテナをローカルで実行します。
~/glassfish-prebuilt$
eb local run --port 8080
-
(オプション) コンテナが実行しているときに、eb local open コマンドを使用して、ウェブブラウザでアプリケーションを表示します。または、ウェブブラウザで http://localhost:8080/
を開きます。 ~/glassfish-prebuilt$
eb local open
-
eb create コマンドを使用して、環境を作成し、Docker イメージをデプロイします。
~/glassfish-prebuilt$
eb create
glassfish-prebuilt-env
-
環境が起動したら、eb open コマンドを使用してウェブブラウザで表示します。
~/glassfish-prebuilt$
eb open
アプリケーション例を使用し終えたら、環境を終了し、関連するリソースを削除します。
~/glassfish-prebuilt$
eb terminate --all