kokoichi206 / cloud-prac

0 stars 0 forks source link

Lightsail で遊ぶ #26

Open kokoichi206 opened 9 months ago

kokoichi206 commented 9 months ago
kokoichi206 commented 9 months ago

lightsail のコンテナレジストリにデプロイ

使用できるようにする

aws cli にプラグインが必要らしい。

install lightsail plugin

brew install aws/tap/lightsailctl

謎のエラー

$ docker build -t sns-app-backend --no-cache .

$ aws lightsail push-container-image --region ap-northeast-1 --service-name Amazon_Linux_2-1 --service-name container-service-1 --label testlabel --image sns-app-backend:ee0e066df842

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Command '['lightsailctl', '--plugin', '--input-stdin']' returned non-zero exit status 1.

docker の host が間違ってそう。

$ docker context ls
NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT                                  KUBERNETES ENDPOINT   ORCHESTRATOR
default             moby                Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                                            
desktop-linux *     moby                Docker Desktop                            unix:///Users/kokoichi/.docker/run/docker.sock

docker desktop が悪い? dind とかで置き換える?いや、その後の aws への push がめんどくさそう。

lightsail の cli 側で docker の参照を固定値で持ってるとか?

aws-clilightsailctl には関連 issue はなさそう。

pushContainer の中DockerEngine を作成している。 ここの client.Fromenv とはこれのことで、DOCKER_API_VERSION や DOCKER_HOST が設定できそう。 https://github.com/moby/moby/blob/86b86412a1b7df7dcecc81aa6ba795ff6b0c3ce3/client/options.go#L20-L45

これをシェル変数に設定してあげたらいけた。

$ DOCKER_HOST=unix:///Users/kokoichi/.docker/run/docker.sock aws lightsail push-container-image --region ap-northeast-1 --service-name Amazon_Linux_2-1 --service-name container-service-1 --label testlabel --image sns-app-backend:ee0e066df842

8968b52d5591: Pushed 
a83c9b56bbe0: Pushed 
77192cf194dd: Pushed 
Digest: sha256:9136b6f88b47379a32a8388a742e41b5d0c26a7f8c3add7ff47653d48cb77a88
Image "sns-app-backend:ee0e066df842" registered.
Refer to this image as ":container-service-1.testlabel.1" in deployments.
kokoichi206 commented 9 months ago

container のデプロイ

インスタンスの部分じゃないので注意。

Screenshot 2024-02-12 at 2 39 51

public endpoint の用意

kokoichi206 commented 9 months ago

db について

lightsail 内の db が初期で設定するパスワードが 4eaGqt&J[2cj?UaG7sZ9~tK:7Rg^dNB* だった(変更済み)。

migration のスクリプトで

POSTGRESQL_URL="postgres://postgres:postgres@localhost:5588/sns-db?sslmode=disable"

のように指定しているが、ここに上記 password を入力すると

などのデラーが出て失敗した。

urlencode することでパースでのエラーは出なくなったが、password authentication に失敗したままだった。

深ぼってみたい気もするが、lightsail 上でパスワード変更が変更できそうだったため一旦そちらで対応する。

kokoichi206 commented 9 months ago

terraform

db の create は10分くらいかかるので辛抱強く待つ!

container の deploy も3分くらいかかる。

こーど置き場

https://github.com/kokoichi206/cloud-prac/tree/main/terraform_prac/lightsail