Lightsail はプライベートのリポジトリからデプロイできない
みんな無料が大好き、docker hub リポジトリには1つしか無料枠がない、だからプライベートにする、Lightsail にデプロイできない。
の流れから、しかたなくローカルマシンから直接 Lightsail にデプロイした記録
作業記録
コンテナの作成
3か月無料になるMicro を選択して名前つけるだけ
AWS CLI をインストール
手順
https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/amazon-lightsail-install-software
ダウンロード
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html#cliv2-windows-install
- https://awscli.amazonaws.com/AWSCLIV2.msi インストール
- https://awscli.amazonaws.com/AWSCLIV2-2.0.30.msi 更新確認
- msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi 更新確認
- C:>aws --version インストール確認
lightsailctl プラグインをインストール
https://s3.us-west-2.amazonaws.com/lightsailctl/latest/windows-amd64/lightsailctl.exe
上記ダウンロードを C:\Temp\lightsailctl\ に保存
コマンドプロンプトを管理者で実行
環境変数設定
C:\> setx PATH="%PATH%;C:\Temp\lightsailctl" /M
成功: 指定した値は保存されました。
これで準備完了と、手順には書いてある。
Amazon Lightsail コンテナイメージの作成
手順
https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/amazon-lightsail-creating-container-images
👆には、Dockerfile からイメージ作成とありますが、ローカルでコンテナ起動して設定等々することはできるので特にDockerfile にこだわる必要はなさそう。
Amazon Lightsail にコンテナイメージをプッシュ
手順
https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/amazon-lightsail-pushing-container-images
AWSにイメージをプッシュ
PS C:\> aws lightsail push-container-image --region <Region> --service-name <ContainerServiceName> --label <ContainerImageLabel> --image <LocalContainerImageName>:<ImageTag>
[XXXXXXXXXX: Preparing
[XXXXXXXXXX: Preparing
[XXXXXXXXXX: Preparing
[XXXXXXXXXX: Preparing
[XXXXXXXXXX: Preparing
[XXXXXXXXXX: Preparing
[XXXXXXXXXX: Preparing
[XXXXXXXXXX: Preparing
[XXDigest: sha256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Image "XXXXXXX/XXXXXXX:XXXXXX" registered.
Refer to this image as ":XXXXXXX.XXXXXXX.1" in deployments.
※WARNINGが出たら
WARNING: You are using version 1.0.0 of lightsailctl, but version is available.
WARNING: You are using version 1.0.0 of lightsailctl, but version is available. To download, visit https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-install-software
NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
Command '['lightsailctl', '--plugin', '--input-stdin']' returned non-zero exit status 1.
これは、IAM で作成されたユーザのアクセスキーが AWS CLI に設定されていないため。
- IAM でユーザ作成(プログラムによるアクセス-AdministratorAccessで作成しましたが適宜選んでね)
- アクセスキーとシークレットアクセスキーを取得
ローカルにて
aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: XXXXXXX
Default output format [None]:
👆で正常になった
lightsail コンソールでイメージの確認とデプロイ
コンテナにイメージが登録されているので、デプロイからこのイメージを選択してデプロイ実行
- コンテナ名・・・・前段で作成したコンテナ名
- イメージ・・・・・さきほど苦労してCLIからプッシュしたイメージ名(クリックで選択できます)
- ポート・・・・・・dockerコンテナ側が待ち受けているポートを指定すると、外部からのデフォルトポート(80 とか 443)をこのポートにアタッチしてくれる
まとめ
ひとまず、docker for Windows で作成したコンテナをイメージにして、Amazon Lightsail にデプロイすることができました。
実際には、これだけではなく、Lightsail でDBを作成しコンテナから接続したり、ドメイン設定するなどが必要になるでしょう。
しかし、docker 便利ですね。引っ越しが楽です。