Amazon Lightsail でコンテナ ウェブアプリケーションをデプロイする
入門ガイド
モジュール 3 : コンテナをデプロイする
このモジュールでは、コンテナをクラウドにデプロイします
はじめに
Amazon Lightsail コンテナサービスの準備ができましたので、次のステップではコンテナをデプロイします。
Amazon Lightsail は、Docker Hub、Amazon ECR Public Gallery などの公開コンテナイメージ リポジトリや、ローカルマシンからコンテナをデプロイすることができます。
このガイドでは、ローカルコンピュータから直接デプロイすることにします。
学習内容
- ローカル コンテナイメージを、Amazon Lightsail へアップする方法
- コンテナ サービス上のコンテナ イメージのバージョンをデプロイする方法
所要時間
10 分
モジュールの前提条件
- 管理者レベルのアクセス権を持つ AWS アカウント**
- 推奨ブラウザ: Chrome または Firefox の最新バージョン
[**] 過去 24 時間以内に作成されたアカウントは、このチュートリアルに必要なサービスへのアクセス権限がまだ付与されていない可能性があります。
実装
ローカルコンテナイメージをアップする
コンテナをデプロイする最初のステップとして、コンテナイメージを Amazon Lightsail にアップします
コンテナを作成したディレクトリでターミナルを開き、以下のコマンドを入力します。必ず、Lightsail コンテナサービスを作成したのと同じリージョンを使用してください。
aws lightsail push-container-image \
--region eu-west-3 \
--service-name signup-application \
--label latest \
--image demo-flask-signup:latest
# the command outputs the following lines
f017a6ddb209: Pushed
b94dee417b5e: Pushed
37d77b23a488: Pushed
8e77a3b871e7: Pushed
4bc5d67b6427: Pushed
ce8ffb5c560e: Pushed
4226d5d0360f: Pushed
9d1af766c818: Pushed
d97733c0a3b6: Pushed
c553c6ba5f13: Pushed
48b4a40de359: Pushed
ace9ed9bcfaf: Pushed
764055ebc9a7: Pushed
Digest: sha256:128f84907d30a1fb47c1888720485fa8050cc99bc1034e0cfd1f46d3b6e57e19
Image "demo-flask-signup:latest" registered.
Refer to this image as ":signup-application.latest.1" in deployments.
このコマンドは docker push を起動し、Amazon Lightsail にイメージをアップロードします。ネットワークの帯域幅によって異なりますが、完了までに数分かかる場合があります。
出力の最後の行には、コンテナの内部名が表示されています。ここでは :signup-application.latest.1となっています。これを覚えておいて下さい。コンテナサービスへコンテナをデプロイするのに必要となります。後でコンテナ名にアクセスしたい場合は、次のコマンドを入力します。
aws lightsail get-container-images \
--region eu-west-3 \
--service-name signup-application
# the command outputs the following lines
{
"containerImages": [
{
"image": ":signup-application.latest.1",
"digest": "sha256:128f84907d30a1fb47c1888720485fa8050cc99bc1034e0cfd1f46d3b6e57e19",
"createdAt": "2021-07-17T15:11:49+02:00"
}
]
}
ローカル コンテナイメージを Lightsail にアップする
コンテナイメージが Amazon Lightsail に保存されたので、そのイメージをコンテナサービスにデプロイすることができます。
Lightsail は、デプロイを作成するために以下の情報を必要とします。
- デプロイするコンテナイメージの名前(前のコマンドで返された :signup-application.latest.1)
- コンテナが公開するネットワークポート(Dockerfileの設定に記載されています)
- (オプション)一般にアクセス可能なネットワーク エンドポイントの詳細:TCPポート番号とプロトコル、IPは自動的に割り当てられます。
これらの情報はすべて、デプロイ前に作成する必要のあるJSONファイルに保存されます。
lc.jsonという名前のJSONファイルを作成します。ダウンロードしたコードから作業する場合は、コンテナと同じディレクトリにある既存のlc.jsonファイルを修正します。以下のjsonをファイルにコピーしてください。
{
"serviceName": "signup-application",
"containers": {
"signup-app-container": {
"image": ":signup-application.latest.1",
"ports": {
"80": "HTTP"
}
}
},
"publicEndpoint": {
"containerName": "signup-app-container",
"containerPort": 80
}
}
その後、以下のコマンドを入力して、コンテナをデプロイします。
aws lightsail create-container-service-deployment \
--region eu-west-3 \
--cli-input-json file://lc.json
# the command outputs the following
{
"containerService": {
"containerServiceName": "signup-application",
"arn": "arn:aws:lightsail:eu-west-3:012345678901:ContainerService/528a0bcf-fd14-42d4-a09a-943a241adc51",
"createdAt": "2021-07-17T13:38:40+02:00",
"location": {
"availabilityZone": "all",
"regionName": "eu-west-3"
},
"resourceType": "ContainerService",
"tags": [],
"power": "nano",
"powerId": "nano-1",
"state": "DEPLOYING",
"scale": 2,
"nextDeployment": {
"version": 1,
"state": "ACTIVATING",
"containers": {
"signup-app-container": {
"image": ":signup-application.latest.1",
"command": [],
"environment": {},
"ports": {
"80": "HTTP"
}
}
},
"publicEndpoint": {
"containerName": "signup-app-container",
"containerPort": 80,
"healthCheck": {
"healthyThreshold": 2,
"unhealthyThreshold": 2,
"timeoutSeconds": 2,
"intervalSeconds": 5,
"path": "/",
"successCodes": "200-499"
}
},
"createdAt": "2021-07-17T15:31:01+02:00"
},
"isDisabled": false,
"principalArn": "arn:aws:iam::577312533299:role/amazon/lightsail/eu-west-3/containers/signup-application/1jetjd21p8qshe57seuh71tnrnn29ps77lnno20sbgl2ghbuc0r0",
"privateDomainName": "signup-application.service.local",
"url": "https://signup-application.me04fvc6dbk4e.eu-west-3.cs.amazonlightsail.com/"
}
}
「状態」が「デプロイ」になっているのを確認してください。しばらくすると、状態が アクティブになります。デプロイを完了するには数分かかります。以下のコマンドを用いてデプロイの状態を確認できます:
# while deploying
aws lightsail get-container-services \
--region eu-west-3 \
--query "containerServices[].nextDeployment.state"
# once deployed
aws lightsail get-container-services \
--region eu-west-3 \
--query "containerServices[].currentDeployment.state"
デプロイ環境をテストします
デプロイ環境をテストするには、まず作成された URL Lightsail を回復します。ターミナルを開き、下記のコマンドを入力します。
aws lightsail get-container-services \
--region eu-west-3 \
--query "containerServices[].url"
# the command outputs something like the below
[
"https://signup-application.me04fvc6dbk4e.eu-west-3.cs.amazonlightsail.com/"
]
お好みのブラウザを開き、デプロイのURL を指定します。

また、cURL を使って、コマンドラインからエンドポイントをテストすることもできます。
curl -I https://signup-application.me04fvc6dbk4e.eu-west-3.cs.amazonlightsail.com/
HTTP/2 200
date: Sat, 17 Jul 2021 13:38:04 GMT
content-type: text/html; charset=utf-8
content-length: 4579
server: nginx/1.21.1
おめでとうございます、あなたのコンテナはAmazon Lightsail にデプロイされました。
まとめ
このガイドでは、Amazon Lightsail にコンテナをデプロイする方法を学びました。 次のモジュールでは、コンテナをアップデートする方法を学びます。
次は:コンテナをアップデートする