(レガシー) Amazon Linux 上で動作するマルチコンテナ Docker から Amazon Linux 2 プラットフォームブランチで動作する Docker への移行 - AWS Elastic Beanstalk

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

(レガシー) Amazon Linux 上で動作するマルチコンテナ Docker から Amazon Linux 2 プラットフォームブランチで動作する Docker への移行

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 がサポートされています。詳細については、「Amazon Linux 上で動作するマルチコンテナ Docker の Amazon Linux 2023 上の ECS への移行」を参照してください。

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

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

docker-compose.yml ファイル

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」を参照してください。Dockerrun.aws.json v2 ファイルの詳細については、「Dockerrun.aws.json v2」を参照してください。

docker-compose.yml Dockerrun.aws.json v2
version: '2.4' services: php-app: image: "php:fpm" volumes: - "./php-app:/var/www/html:ro" - "${EB_LOG_BASE_DIR}/php-app:/var/log/sample-app" mem_limit: 128m environment: Container: PHP nginx-proxy: image: "nginx" ports: - "80:80" volumes: - "./php-app:/var/www/html:ro" - "./proxy/conf.d:/etc/nginx/conf.d:ro" - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx" mem_limit: 128m links: - php-app
{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "php-app", "host": { "sourcePath": "/var/app/current/php-app" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/proxy/conf.d" } } ], "containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "environment": [ { "name": "Container", "value": "PHP" } ], "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }, { "name": "nginx-proxy", "image": "nginx", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "php-app" ], "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d", "readOnly": true }, { "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" } ] } ] }

移行に関するその他の考慮事項

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 ファイルを生成し、各プロパティを環境変数としてリスト化します。詳細については、「コンテナ内の環境変数の参照」を参照してください。

Elastic Beanstalk は環境プロパティをコンテナに直接渡すことができます。コンテナ内で実行されているコードは、追加の設定なしに、環境変数としてこれらのプロパティにアクセスできます。

ログディレクトリ

各コンテナについて、Elastic Beanstalk は /var/log/eb-docker/containers/<service name> (または ${EB_LOG_BASE_DIR}/<service name>)というログディレクトリを作成します。詳細については、「Docker コンテナのカスタマイズされたログ記録 (Docker Compose)」を参照してください。

各コンテナについて、Elastic Beanstalk は /var/log/containers/<containername> というログディレクトリを作成します。詳細については、「コンテナの定義形式」の mountPoints フィールドを参照してください。

移行手順

Amazon Linux 2 Docker プラットフォームに移行するには
  1. 既存の Dockerrun.aws.json v2 ファイルに基づいて、アプリケーション用の docker-compose.yml ファイルを作成します。詳細については、前述の「docker-compose.yml ファイル」セクションを参照してください。

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

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

    ~/myApplication |-- docker-compose.yml |-- .ebextensions |-- php-app |-- proxy
  3. eb init コマンドを使用して、Elastic Beanstalk にデプロイするローカルディレクトリを設定します。

    ~/myApplication$ eb init -p docker application-name
  4. eb create コマンドを使用して、環境を作成し、Docker イメージをデプロイします。

    ~/myApplication$ eb create environment-name
  5. アプリがウェブアプリケーションの場合、環境の起動後に eb open コマンドを使用してウェブブラウザに表示します。

    ~/myApplication$ eb open environment-name
  6. eb status コマンドを使用して、新しく作成した環境のステータスを表示できます。

    ~/myApplication$ eb status environment-name