Docker Amazon Linux 2 プラットフォームへの移行 - AWS Elastic Beanstalk

Docker Amazon Linux 2 プラットフォームへの移行

重要

Amazon Linux 2 プラットフォームバージョンは、(Amazon Linux 2 より前の) Amazon Linux AMI プラットフォームバージョンとは根本的に異なります。これらの異なるプラットフォーム世代は、いくつかの点で互換性がありません。Amazon Linux 2 プラットフォームのバージョンに移行する場合は、「Elastic Beanstalk Linux アプリケーションを Amazon Linux 2 に移行する」の情報を必ずお読みください。

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 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" } ] } ] }

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

エリア Amazon Linux AMI のマルチコンテナ Docker プラットフォーム Docker Compose を使用した Amazon Linux 2 の Docker プラットフォーム

環境プロパティ

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

コンテナが環境プロパティにアクセスするには、docker-compose.yml ファイル内の .env ファイルへの参照を追加する必要があります。Elastic Beanstalk は .env ファイルを生成し、各プロパティを環境変数としてリスト化します。詳細については、「コンテナ内の環境変数の参照」を参照してください。

ログディレクトリ

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

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

移行手順

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