

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

# Amazon Linux 上で動作するマルチコンテナ Docker から Amazon Linux 2 で動作する Elastic Beanstalk Docker への移行
<a name="docker-multicontainer-migration"></a>

*64 ビット版 Amazon Linux 2 上で動作する ECS* プラットフォームブランチのリリースに先立って、Elastic Beanstalk では、*64 ビット版 Amazon Linux 上で動作するマルチコンテナ Docker* プラットフォームブランチをベースにした環境を使用するお客様に Amazon Linux 2 への代替移行パスが提供されています。このトピックでは、その移行パスについて説明します。このトピックは、移行パスを完了したすべてのお客様の参照用ドキュメントとして使用できます。

*64 ビット版 Amazon Linux 上で動作するマルチコンテナ Docker* プラットフォームブランチをベースにした環境を使用するお客様は、*64 ビット版 Amazon Linux 2 上で動作する ECS* プラットフォームブランチに移行することをお勧めします。代替移行パスとは異なり、このアプローチでは引き続き Amazon ECS を使用して、ECS マネージド Docker 環境へのコンテナのデプロイを調整します。これにより、より直接的なアプローチが可能になります。ソースコードに変更を加える必要はなく、同じ `Dockerrun.aws.json` v2 がサポートされています。詳細については、「[Elastic Beanstalk アプリケーションを AL1 の ECS マネージドマルチコンテナ Docker から Amazon Linux 2023 の ECS に移行する](migrate-to-ec2-AL2-platform.md)」を参照してください。

## Amazon Linux 上のマルチコンテナ Docker から Docker Amazon Linux 2 プラットフォームブランチへのレガシー移行
<a name="docker-multicontainer-migration-to-docker-al2"></a>

[Amazon Linux AMI のマルチコンテナ Docker プラットフォーム](create_deploy_docker_ecs.md)で実行されているアプリケーションを Amazon Linux 2 Docker プラットフォームに移行できます。Amazon Linux AMI のマルチコンテナ Docker プラットフォームでは、コンテナとして実行するためにビルド済みのアプリケーションイメージを指定する必要があります。移行後は、Amazon Linux 2 Docker プラットフォームでも Elastic Beanstalk がデプロイ中にコンテナイメージを構築できるため、この制限はなくなります。アプリケーションはマルチコンテナ環境で引き続き実行され、Docker Compose ツールの利点が追加されます。





Docker Compose は、マルチコンテナ Docker アプリケーションを定義および実行するためのツールです。Docker Compose の詳細およびインストール方法については、Docker サイトの「[Docker Compose の概要](https://docs.docker.com/compose/)」および「[Docker Compose のインストール](https://docs.docker.com/compose/install/)」を参照してください。

### `docker-compose.yml` ファイル
<a name="docker-multicontainer-migration.files"></a>

Docker Compose ツールは、アプリケーションサービスの設定に `docker-compose.yml` ファイルを使用します。このファイルは、アプリケーションプロジェクトディレクトリおよびアプリケーションソースバンドル内の `Dockerrun.aws.json v2` ファイルを置き換えます。`docker-compose.yml` ファイルを手動で作成すると、ほとんどのパラメータ値について `Dockerrun.aws.json v2` ファイルを参照すると便利です。

以下は、同じアプリケーションの `docker-compose.yml` ファイルと対応する `Dockerrun.aws.json v2` ファイルの例です。`docker-compose.yml` ファイルの詳細については、「[Compose file reference](https://docs.docker.com/compose/compose-file/)」を参照してください。`Dockerrun.aws.json v2` ファイルの詳細については、「[`Dockerrun.aws.json` v2](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun)」を参照してください。


| **`docker-compose.yml`** | **`Dockerrun.aws.json v2`** | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/docker-multicontainer-migration.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/docker-multicontainer-migration.html)  | 
|  <pre>version: '2.4'<br />services:<br />  php-app:<br />    image: "php:fpm"<br />    volumes:<br />      - "./php-app:/var/www/html:ro"<br />      - "${EB_LOG_BASE_DIR}/php-app:/var/log/sample-app"<br />    mem_limit: 128m<br />    environment:<br />      Container: PHP<br />  nginx-proxy:<br />    image: "nginx"<br />    ports:<br />      - "80:80"<br />    volumes:<br />      - "./php-app:/var/www/html:ro"<br />      - "./proxy/conf.d:/etc/nginx/conf.d:ro"<br />      - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx"<br />    mem_limit: 128m<br />    links:<br />      - php-app</pre>  | 
|  <pre>{<br />  "AWSEBDockerrunVersion": 2,<br />  "volumes": [<br />    {<br />      "name": "php-app",<br />      "host": {<br />        "sourcePath": "/var/app/current/php-app"<br />      }<br />    },<br />    {<br />      "name": "nginx-proxy-conf",<br />      "host": {<br />        "sourcePath": "/var/app/current/proxy/conf.d"<br />      }<br />    }<br />  ],<br />  "containerDefinitions": [<br />    {<br />      "name": "php-app",<br />      "image": "php:fpm",<br />      "environment": [<br />        {<br />          "name": "Container",<br />          "value": "PHP"<br />        }<br />      ],<br />      "essential": true,<br />      "memory": 128,<br />      "mountPoints": [<br />        {<br />          "sourceVolume": "php-app",<br />          "containerPath": "/var/www/html",<br />          "readOnly": true<br />        }<br />      ]<br />    },<br />    {<br />      "name": "nginx-proxy",<br />      "image": "nginx",<br />      "essential": true,<br />      "memory": 128,<br />      "portMappings": [<br />        {<br />          "hostPort": 80,<br />          "containerPort": 80<br />        }<br />      ],<br />      "links": [<br />        "php-app"<br />      ],<br />      "mountPoints": [<br />        {<br />          "sourceVolume": "php-app",<br />          "containerPath": "/var/www/html",<br />          "readOnly": true<br />        },<br />        {<br />          "sourceVolume": "nginx-proxy-conf",<br />          "containerPath": "/etc/nginx/conf.d",<br />          "readOnly": true<br />        },<br />        {<br />          "sourceVolume": "awseb-logs-nginx-proxy",<br />          "containerPath": "/var/log/nginx"<br />        }<br />      ]<br />    }<br />  ]<br />}<br /> </pre>  | 

### 移行に関するその他の考慮事項
<a name="docker-multicontainer-migration.considerations"></a>

Docker Amazon Linux 2 プラットフォームとマルチコンテナ Docker Amazon Linux AMI プラットフォームでは、環境プロパティの実装方法が異なります。これら 2 つのプラットフォームには、Elastic Beanstalk がコンテナごとに作成する異なるログディレクトリもあります。Amazon Linux AMI マルチコンテナー Docker プラットフォームから移行した後、新しい Amazon Linux 2 Docker プラットフォーム環境におけるこれらの異なる実装に注意する必要があります。


|  **エリア**  |  **Docker Compose を使用した Amazon Linux 2 の Docker プラットフォーム**  |  **Amazon Linux AMI のマルチコンテナ Docker プラットフォーム**  | 
| --- | --- | --- | 
|  環境プロパティ  |  コンテナが環境プロパティにアクセスするには、`.env` ファイル内の `docker-compose.yml` ファイルへの参照を追加する必要があります。Elastic Beanstalk は `.env` ファイルを生成し、各プロパティを環境変数としてリスト化します。詳細については、「[コンテナ内の環境変数の参照](create_deploy_docker.container.console.md#docker-env-cfg.env-variables)」を参照してください。  |  Elastic Beanstalk は環境プロパティをコンテナに直接渡すことができます。コンテナ内で実行されているコードは、追加の設定なしに、環境変数としてこれらのプロパティにアクセスできます。  | 
|  ログディレクトリ  |  各コンテナについて、Elastic Beanstalk は `/var/log/eb-docker/containers/<service name>` (または `${EB_LOG_BASE_DIR}/<service name>`)というログディレクトリを作成します。詳細については、「[Docker Compose を使用した Docker コンテナのカスタマイズされたログ記録](create_deploy_docker.container.console.md#docker-env-cfg.dc-customized-logging)」を参照してください。  |  各コンテナについて、Elastic Beanstalk は `/var/log/containers/<containername>` というログディレクトリを作成します。詳細については、「[コンテナの定義形式](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun_format)」の `mountPoints` フィールドを参照してください。  | 

### 移行手順
<a name="docker-multicontainer-migration.procedure"></a>

**Amazon Linux 2 Docker プラットフォームに移行するには**

1. 既存の `Dockerrun.aws.json v2` ファイルに基づいて、アプリケーション用の `docker-compose.yml ` ファイルを作成します。詳細については、前述の「[`docker-compose.yml` ファイル](#docker-multicontainer-migration.files)」セクションを参照してください。

1. アプリケーションプロジェクトフォルダのルートディレクトリで、`Dockerrun.aws.json v2` ファイルを先ほど作成した `docker-compose.yml` に置き換えます。

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

   ```
   ~/myApplication
   |-- docker-compose.yml
   |-- .ebextensions
   |-- php-app
   |-- proxy
   ```

1. **eb init** コマンドを使用して、Elastic Beanstalk にデプロイするローカルディレクトリを設定します。

   ```
   ~/myApplication$ eb init -p docker application-name
   ```

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

   ```
   ~/myApplication$ eb create environment-name
   ```

1. アプリがウェブアプリケーションの場合、環境の起動後に **eb open** コマンドを使用してウェブブラウザに表示します。

   ```
   ~/myApplication$ eb open environment-name
   ```

1. **eb status** コマンドを使用して、新しく作成した環境のステータスを表示できます。

   ```
   ~/myApplication$ eb status environment-name
   ```