LoginSignup
2
0

More than 1 year has passed since last update.

Docker for Windows で作成したコンテナは、プライベートなので Amazon Lightsail コンテナにデプロイできないから、対応した記録

Posted at

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

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 コンソールでイメージの確認とデプロイ

コンテナにイメージが登録されているので、デプロイからこのイメージを選択してデプロイ実行
image.png

  • コンテナ名・・・・前段で作成したコンテナ名
  • イメージ・・・・・さきほど苦労してCLIからプッシュしたイメージ名(クリックで選択できます)
  • ポート・・・・・・dockerコンテナ側が待ち受けているポートを指定すると、外部からのデフォルトポート(80 とか 443)をこのポートにアタッチしてくれる

まとめ

ひとまず、docker for Windows で作成したコンテナをイメージにして、Amazon Lightsail にデプロイすることができました。
実際には、これだけではなく、Lightsail でDBを作成しコンテナから接続したり、ドメイン設定するなどが必要になるでしょう。

しかし、docker 便利ですね。引っ越しが楽です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0