

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Elastic Beanstalk で事前設定された Docker GlassFish コンテナ
<a name="create_deploy_dockerpreconfig"></a>

**注記**  
 [2022 年 7 月 18 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)に、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべて**廃止**に設定されました。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「[Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する](using-features.migration-al.md)」を参照してください。

Amazon Linux AMI (AL1) で動作する、事前設定済みの Docker GlassFish プラットフォームブランチは、サポートされなくなりました。GlassFish アプリケーションをサポートされている Amazon Linux 2023 に移行するには、GlassFish とアプリケーションコードを Amazon Linux 2023 Docker イメージにデプロイします。詳細については、次の「[Docker プラットフォームへの GlassFish アプリケーションのデプロイ: Amazon Linux 2023 への移行パス](#docker-glassfish-tutorial)」トピックを参照してください。

## 事前設定済みの Docker コンテナの使用開始 - (Amazon Linux 2 より前の) Amazon Linux AMI で
<a name="create_deploy_dockerpreconfig.walkthrough"></a>

このセクションでは、事前設定された Docker コンテナを使用して、ローカルでアプリケーション例を開発し、そのアプリケーションを Elastic Beanstalk にデプロイする方法について説明します。

### ローカルの開発環境のセットアップ
<a name="create_deploy_dockerpreconfig.walkthrough.setup"></a>

このチュートリアルでは、GlassFish アプリケーション例を使用します。

**使用する環境をセットアップするには**

1. アプリケーション例用の新しいフォルダーを作成します。

   ```
   ~$ mkdir eb-preconf-example
   ~$ cd eb-preconf-example
   ```

1. アプリケーション例のコードを新しいフォルダにダウンロードします。

   ```
   ~$ wget https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-glassfish-v1.zip
   ~$ unzip docker-glassfish-v1.zip
   ~$ rm docker-glassfish-v1.zip
   ```

### ローカル環境での開発とテスト
<a name="create_deploy_dockerpreconfig.walkthrough.dev"></a>

**GlassFish アプリケーション例を開発するには**

1. `Dockerfile` をアプリケーションのルートフォルダに追加します。ファイルで、ローカルの事前設定済み AWS Elastic Beanstalk Docker コンテナの実行に使用する Docker ベースイメージを指定します。後で、アプリケーションを Elastic Beanstalk の事前設定された Docker GlassFish プラットフォームバージョンにデプロイします。このプラットフォームバージョンが使用する Docker ベースイメージを選択します。プラットフォームバージョンの現在の Docker イメージを検出するには、「*AWS Elastic Beanstalk プラットフォーム*」ガイドの「*AWS Elastic Beanstalk でサポートされるプラットフォーム*」ページにある「[事前設定済み Docker コンテナ](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.dockerpreconfig)」セクションを参照してください。  
**Example \~/Eb-preconf-example/Dockerfile**  

   ```
   # For Glassfish 5.0 Java 8
   FROM amazon/aws-eb-glassfish:5.0-al-onbuild-2.11.1
   ```

   `Dockerfile` の使用方法の詳細については、「[Elastic Beanstalk へのデプロイ用に Docker イメージを準備する](single-container-docker-configuration.md)」を参照してください。

1. Docker イメージを作成します。

   ```
   ~/eb-preconf-example$ docker build -t my-app-image .
   ```

1. イメージから Docker コンテナを実行します。
**注記**  
コンテナのポート 8080 をローカルホストのポート 3000 にマッピングする `-p` フラグを指定する必要があります。Elastic Beanstalk Docker コンテナでは、常にコンテナのポート 8080 でアプリケーションを公開します。`-it` フラグは、イメージをインタラクティブプロセスとして実行します。`--rm` フラグは、コンテナが存在する場合にコンテナファイルシステムをクリーンアップします。オプションで、イメージをデーモンとして実行するための `-d` フラグも指定できます。

   ```
   $ docker run -it --rm -p 3000:8080 my-app-image
   ```

1. アプリケーション例を表示するには、次の URL をウェブブラウザに打ち込みます。

   ```
   http://localhost:3000
   ```  
![ウェブブラウザで表示される GlassFish アプリケーション例](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/dockerpreconfig-webpage.png)

### Elastic Beanstalk にデプロイします
<a name="create_deploy_dockerpreconfig.walkthrough.deploy"></a>

アプリケーションをテストすると、Elastic Beanstalk にデプロイする準備が完了します。

**アプリケーションを Elastic Beanstalk にデプロイするには**

1. アプリケーションのルートフォルダで、`Dockerfile` を `Dockerfile.local` に名前変更します。このステップは、Elastic Beanstalk に対する正しい指示を含んだ `Dockerfile` を Elastic Beanstalk で使用し、カスタマイズされた Docker イメージを Elastic Beanstalk 環境の各 Amazon EC2 インスタンスに作成するために必要なステップです。
**注記**  
プラットフォームバージョンのベースの Docker イメージを変更する命令が `Dockerfile` に含まれている場合、このステップを行う必要はありません。`Dockerfile` に、コンテナの構築に使用するベースイメージを指定する `Dockerfile` 行のみが含まれている場合、`FROM` を使用する必要は一切ありません。この場合、その `Dockerfile` は重複しています。

1. アプリケーションソースバンドルを作成します。

   ```
   ~/eb-preconf-example$ zip myapp.zip -r *
   ```

1. 事前に設定されたリンク: [console.aws.amazon.com/elasticbeanstalk/home\#/newApplication?applicationName=tutorials&environmentType=LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced) を使用して、Elastic Beanstalk コンソールを開きます。

1. [**Platform (プラットフォーム)**] の [**Preconfigured – Docker (事前設定 Docker)**] で、[**Glassfish**] を選択します。

1. [**Application code**] では、[**Upload your code**] を選択して、[**Upload**] を選択します。

1. [**Local file (ローカルファイル)**]、[**Browse (参照)**] の順に選択したら、先ほど作成したアプリケーションソースバンドルを開きます。

1. **アップロード** を選択します。

1. **確認と起動** を選択します。

1. 使用できる設定を確認し、**アプリの作成** を選択します。

1. 環境が作成されると、デプロイされたアプリケーションを表示できます。コンソールダッシュボードの上部に表示される環境 URL を選択します。

## Docker プラットフォームへの GlassFish アプリケーションのデプロイ: Amazon Linux 2023 への移行パス
<a name="docker-glassfish-tutorial"></a>

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

このチュートリアルでは、Docker AWS Elastic Beanstalk プラットフォームを使用して、[Java EE GlassFish アプリケーションサーバーに基づくアプリケーションを](https://www.oracle.com/middleware/technologies/glassfish-server.html) Elastic Beanstalk 環境にデプロイする方法について説明します。

Docker イメージを構築する 2 つの方法を示します。
+ **シンプル** – GlassFish アプリケーションのソースコードを提供し、Elastic Beanstalk 環境のプロビジョニングの一環として Docker イメージを構築して実行します。この方法は、設定が簡単ですが、インスタンスのプロビジョニング時間が長くなります。
+ **アドバンスト** – アプリケーションコードと依存関係を含むカスタム Docker イメージを作成し、Elastic Beanstalk に提供して、お客様の環境で使用します。この方法は少し複雑ですが、お客様の環境でのインスタンスのプロビジョニング時間が短くなります。

### 前提条件
<a name="docker-glassfish-tutorial.prereqs"></a>

このチュートリアルでは、Elastic Beanstalk の基本的なオペレーション、Elastic Beanstalk コマンドラインコマンドラインインターフェイス (EB CLI) および Docker についてある程度の知識があることを前提としています。まだ起動していない場合は、[Elastic Beanstalk の使用を開始する方法について説明します](GettingStarted.md) の指示に従って、最初の Elastic Beanstalk 環境を起動します。このチュートリアルでは [EB CLI](eb-cli3.md) を使用しますが、Elastic Beanstalk コンソールを使用して環境を作成し、アプリケーションをアップロードすることもできます。

このチュートリアルに従うには、以下の Docker コンポーネントも必要です。
+ Docker の稼働中のローカルインストール。詳細については、Docker ドキュメントウェブサイトの「[Get Docker](https://docs.docker.com/install/)」を参照してください。
+ Docker Hub へのアクセス。Docker ハブにアクセスするには、Docker ID を作成する必要があります。詳細については、Docker ドキュメントウェブサイトの「[Share the application](https://docs.docker.com/get-started/04_sharing_app/)」を参照してください。

Elastic Beanstalk プラットフォームでの Docker 環境の設定の詳細については、この同じ章の「[Elastic Beanstalk へのデプロイ用に Docker イメージを準備する](single-container-docker-configuration.md)」を参照してください。

### シンプルの例: アプリケーションコードを提供する
<a name="docker-glassfish-tutorial.simple"></a>

これは、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 アプリケーションサーバーのログを[ログファイルリクエスト](using-features.logging.md)に含めるためのログ記録キーを提供します。GlassFish ログに関心がない場合は、このファイルを省略できます。

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

   ```
   ~/glassfish-example$ eb init -p docker {{glassfish-example}}
   ```

1. (オプション) **eb local run** コマンドを使用して、コンテナを構築し、ローカルで実行します。

   ```
   ~/glassfish-example$ eb local run --port 8080
   ```
**注記**  
**eb local** コマンドの詳細については、「[**eb local**](eb3-local.md)」を参照してください。このコマンドは Windows ではサポートされていません。または、**docker build** コマンドと **docker run** コマンドを使用してコンテナを構築して実行することもできます。詳細については、「[Docker ドキュメント](https://docs.docker.com/)」を参照してください。

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

   ```
   ~/glassfish-example$ eb local open
   ```

1. **eb create** コマンドを使用して、環境を作成し、アプリケーションをデプロイします。

   ```
   ~/glassfish-example$ eb create {{glassfish-example-env}}
   ```

1. 環境が起動したら、**eb open** コマンドを使用してウェブブラウザで表示します。

   ```
   ~/glassfish-example$ eb open
   ```

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

```
~/glassfish-example$ eb terminate --all
```

### アドバンストの例: 事前に構築された Docker イメージを提供する
<a name="docker-glassfish-tutorial.advanced"></a>

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

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

**注意事項**  
以下のステップでは、一般利用可能な Docker イメージを作成します。
ローカルの Docker インストールから Docker コマンドと、Docker Hub の資格情報を使用します。詳細については、このトピック内で前述した「前提条件」セクションを参照してください。

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

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

1. Docker イメージを構築し、Docker Hub にプッシュします。{{docker-id}} に、あなたの Docker ID を入力して Docker Hub にサインインします。

   ```
   ~/glassfish-example$ docker build -t {{docker-id}}/beanstalk-glassfish-example:latest .
   ~/glassfish-example$ docker push {{docker-id}}/beanstalk-glassfish-example:latest
   ```
**注記**  
イメージをプッシュする前に、**docker login** を実行しなければならないことがあります。パラメータなしでコマンドを実行すると、Docker Hub の資格情報の入力を求められます。

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

   ```
   ~$ mkdir glassfish-prebuilt
   ~$ cd glassfish-prebuilt
   ```

1. 以下の例を `Dockerrun.aws.json` という名前のファイルにコピーします。  
**Example `~/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"
   }
   ```

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

   ```
   ~/glassfish-prebuilt$ eb init -p docker {{glassfish-prebuilt$}}
   ```

1. (オプション) **eb local run** コマンドを使用して、コンテナをローカルで実行します。

   ```
   ~/glassfish-prebuilt$ eb local run --port 8080
   ```

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

   ```
   ~/glassfish-prebuilt$ eb local open
   ```

1. **eb create** コマンドを使用して、環境を作成し、Docker イメージをデプロイします。

   ```
   ~/glassfish-prebuilt$ eb create {{glassfish-prebuilt-env}}
   ```

1. 環境が起動したら、**eb open** コマンドを使用してウェブブラウザで表示します。

   ```
   ~/glassfish-prebuilt$ eb open
   ```

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

```
~/glassfish-prebuilt$ eb terminate --all
```