翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Docker プラットフォームブランチの使用
AWS Elastic Beanstalk は、Dockerfile
で記述されているイメージを構築することによって、またはリモート Docker イメージを引き出すことによって、Docker 環境を起動できます。リモート Docker イメージをデプロイする場合、Dockerfile
を含める必要はありません 。代わりに、Docker Compose も使用している場合、使用するイメージと追加の設定オプションを指定する docker-compose.yml
ファイルを使用します。Docker 環境で Docker Compose を使用していない場合、代わりに Dockerrun.aws.json
ファイルを使用してください。
トピック
前提条件
このチュートリアルでは、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 の設定」を参照してください。
Elastic Beanstalk アプリケーションをコンテナ化する
この例では、 からサンプルの Flask アプリケーションの Docker イメージを作成しますElastic Beanstalk への Flask アプリケーションのデプロイ アプリケーションは、1 つのメインファイル application.py
で構成されます。Dockerfile
も必要です。両方のファイルをディレクトリのルートに配置します。
~/eb-docker-flask/
|-- Dockerfile
|-- application.py
例 ~/eb-docker-flask/application.py
from flask import Flask # Print a nice greeting def say_hello(username = "World"): return '<p>Hello %s!</p>\n' % username # Some bits of text for the page header_text = ''' <html>\n<head> <title>EB Flask Test</title> </head>\n<body>''' instructions = ''' <p><em>Hint</em>: This is a RESTful web service! Append a username to the URL (for example: <code>/Thelonious</code>) to say hello to someone specific.</p>\n''' home_link = '<p><a href="/">Back</a></p>\n' footer_text = '</body>\n</html>' # Elastic Beanstalk looks for an 'application' that is callable by default application = Flask(__name__) # Add a rule for the index page application.add_url_rule('/', 'index', (lambda: header_text + say_hello() + instructions + footer_text)) # Add a rule when the page is accessed with a name appended to the site # URL application.add_url_rule('/<username>', 'hello', (lambda username: header_text + say_hello(username) + home_link + footer_text)) # Run the application if __name__ == "__main__": # Setting debug to True enables debug output. This line should be # removed before deploying a production application. application.debug = True application.run(host="0.0.0.0")
例 ~/eb-docker-flask/Dockerfile
FROM python:3.6 COPY . /app WORKDIR /app RUN pip install Flask==1.0.2 EXPOSE 5000 CMD ["python", "application.py"]
コンテナをローカルでテストする
Elastic Beanstalk CLI (EB CLI) を使用して、Elastic Beanstalk にデプロイするローカルリポジトリを設定します。ディレクトリのルートにあるアプリケーションの Dockerfile
を設定します。
~/eb-docker-flask$
eb init -p docker
application-name
(オプション) eb local run コマンドを使用して、コンテナを構築し、ローカルで実行します。
~/eb-docker-flask$
eb local run --port 5000
注記
eb local コマンドの詳細については、「eb local」を参照してください。このコマンドは Windows ではサポートされていません。または、docker build コマンドと docker run コマンドを使用してコンテナを構築して実行することもできます。詳細については、「Docker ドキュメント
(オプション) コンテナが実行しているときに、eb local open コマンドを使用して、ウェブブラウザでアプリケーションを表示します。または、ウェブブラウザで http://localhost:5000/
~/eb-docker-flask$
eb local open
Dockerfile を使用してコンテナをデプロイする
アプリケーションをローカルでテストした後、Elastic Beanstalk 環境にデプロイします。Elastic Beanstalk では、Dockerfile
の指示を使用して、イメージを構築および実行します。
eb create コマンドを使用して、環境を作成し、アプリケーションをデプロイします。
~/eb-docker-flask$
eb create
environment-name
環境が起動したら、eb open コマンドを使用してウェブブラウザで表示します。
~/eb-docker-flask$
eb open
リモート Docker イメージをテストする
次に、前のセクションから Flask アプリケーションの Docker イメージを構築し、Docker Hub にプッシュします。
メモ
以下のステップでは、一般利用可能な Docker イメージを作成します。
ローカルの Docker インストールから Docker コマンドと、Docker Hub の資格情報を使用します。詳細については、前のセクション「前提条件」を参照してください。
イメージをビルドしてプッシュしたら、Docker 環境で Docker Compose を使用している場合は、docker-compose.yml
ファイルを使用して Elastic Beanstalk にデプロイできます。(Docker 環境で Docker Compose を使用していない場合、代わりに Dockerrun.aws.json
ファイルを使用してください)。Flask アプリケーションの Docker イメージを構築して、Docker Hub にプッシュするには、次のコマンドを実行します。前の例と同じディレクトリを使用しますが、アプリケーションのコードを使用して任意のディレクトリを使用できます。docker-id
に、あなたの Docker ID を入力して Docker Hub にサインインします。
~/eb-docker-flask$
docker build -t
~/eb-docker-flask$docker-id
/beanstalk-flask:latest .docker push
docker-id
/beanstalk-flask:latest
注記
イメージをプッシュする前に、docker login を実行しなければならないことがあります。パラメータなしでコマンドを実行すると、Docker Hub の資格情報の入力を求められます。
Docker Compose ツールを使用して Docker 環境を管理している場合、docker-compose.yml
ファイルのみを使用してアプリケーションをデプロイできるようになりました。docker-compose.yml
ファイルの詳細については、「Docker の設定」を参照してください。
Docker Compose を使用していない場合、代わりに Dockerrun.aws.json
ファイルを使用してください。詳細については、「Dockerrun.aws.json v1 (Docker Compose なし) を使用してデプロイする」を参照してください。
新しいディレクトリを作成し、docker-compose.yml
ファイルを作成します。
例 ~/remote-docker/docker-compose.yml
version: '3.8' services: beanstalk-flask: image: "
username
/beanstalk-flask" ports: - "80:5000"
Docker Compose ツールを使用して Docker 環境を管理していない場合、Dockerrun.aws.json
ファイルのみを使用してアプリケーションをデプロイできるようになりました。Dockerrun.aws.json
ファイルの詳細については、「Docker プラットフォームの設定 (Docker Compose なし) 」を参照してください。
新しいディレクトリを作成し、Dockerrun.aws.json
ファイルを作成します。
例 ~/remote-docker/Dockerrun.aws.json
{ "AWSEBDockerrunVersion": "1", "Image": { "Name": "
username
/beanstalk-flask", "Update": "true" }, "Ports": [ { "ContainerPort": "5000" } ] }
EB CLI を使用して、Elastic Beanstalk にデプロイするローカルリポジトリを設定します。
~/remote-docker$
eb init -p docker
application-name
(オプション) eb local run を使用して、コンテナを構築し、ローカルで実行します。eb local コマンドの詳細については、「eb local」を参照してください。
~/remote-docker$
eb local run --port 5000
(オプション) コンテナが実行しているときに、eb local open コマンドを使用して、ウェブブラウザでアプリケーションを表示します。または、ウェブブラウザで http://localhost:5000/
~/remote-docker$
eb local open
リモート Docker イメージを Elastic Beanstalk にデプロイする
コンテナをローカルでテストした後、Elastic Beanstalk 環境にデプロイします。Docker Compose を使用している場合、Elastic Beanstalk は docker-compose.yml
ファイルを使用してイメージをプルし実行します。それ以外の場合、Elastic Beanstalk は代わりに Dockerrun.aws.json
を使用します。
EB CLI を使用して、環境を作成し、イメージをデプロイします。
~/remote-docker$
eb create
environment-name
環境が起動したら、eb open を使用してウェブブラウザで表示します。
~/remote-docker$
eb open
クリーンアップ
Elastic Beanstalk での作業が終了したら、環境を終了できます。Elastic Beanstalk は、Amazon EC2 インスタンス、データベースインスタンス、ロードバランサー、セキュリティグループ、アラームなど、お客様の環境に関連付けられているすべての AWS リソースを終了します。
Elastic Beanstalk 環境を終了するには
Elastic Beanstalk コンソール
を開き、[Regions] (リージョン) リストで AWS リージョンを選択します。 -
ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。
注記
環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。
-
[Actions] (アクション)、[Terminate environment] (環境の終了) の順に選択します。
-
画面上のダイアログボックスを使用して、環境の終了を確認します。
Elastic Beanstalk を使用すると、いつでもアプリケーション用の新しい環境を簡単に作成できます。
EB CLI の場合:
~/remote-docker$ eb terminate environment-name