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 を指定します。

gsg-build-lightsail-3

また、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 にコンテナをデプロイする方法を学びました。 次のモジュールでは、コンテナをアップデートする方法を学びます。

次は:コンテナをアップデートする

お役に立てましたでしょうか?

フィードバックありがとうございます。
このページがお役に立てれば幸いです。今後の改善のために、追加の詳細情報を共有していただけますか?
閉じる
フィードバックありがとうございます。
このページがお役に立たず申し訳ありません。今後の改善のために、追加の詳細情報を共有していただけますか?
閉じる