Open8

アプリ完成のため毎日手をつけることにした🐹

madokamadoka

1/7 #1 とりあえずデプロイしよう作戦決行

  • appコンテナ(Laravel)からdbコンテナ(MySQL)へ接続する設定:参考記事
  • AWSの調査(ECRを使用してデプロイしていくと良いらしい)
    • ECR(Amazon Elastic Container Registry)は、Dockerのコンテナイメージを保存しておくためのレジストリサービス
    • CodeDeployで自動でデプロイやってけるようにしたい
  • vscodeでAWS CLIのインストール
  • Docker イメージを Amazon ECR リポジトリにプッシュで詰まる
    • IAMでAWSのアクセス許可を設定する (AWS Identity and Access Management )
    • ↑詰った
madokamadoka

1/8 #2 とりあえずデプロイしよう作戦決行

「Docker イメージを Amazon ECR リポジトリにプッシュ」

  • IAMでAWSのアクセス許可を設定する
    • ※リージョンの選択肢忘れ注意
    • IAMユーザーを作成する必要がある
    • ↑引き続き詰まり
madokamadoka

1/9 #3 とりあえずデプロイしよう作戦決行

「Docker イメージを Amazon ECR リポジトリにプッシュ」

  • IAMでユーザー作成
    • IAM Identity Centerでユーザー作成などしてて時間がかかった。何してたんだ発覚記事
    • これはユーザーにグループや権利を割り当てるものであるため、アカウントIAMユーザーはここから作成できない
    • あと、ユーザー登録&承認で時差があってユーザー反映されてなかったりしてとまどってた2体作ってしまった
  • IAMユーザー作成参考記事
  • ECR作成参考記事
madokamadoka

1/10 #4 とりあえずデプロイしよう作戦決行

「Docker イメージを Amazon ECR リポジトリにプッシュ」
 やっとvscodeでコマンド叩いてイメージをAWSにプッシュ!

  • まず、作成したIAMユーザーでawsにログイン(アクセスキー(&シークレットキー)を作成)

リポジトリ名の「プシュコマンドの表示」通りに行う。

  • ①awsのリポジトリを認証する
      エラー出るのでaws configureでアクセスキー、シークレットキーを再設定する
      (やっとこのエラー溶けて嬉しかった〜😭😭)

  • ②リポジトリにイメージをプッシュできるように、イメージにタグを付ける
       dockerイメージは用意してある。詰まった。
       イメージに名前つけるらしい、service, app, dbそれぞれにイメージタグを付けた。
       (docker-compose.yaml内にimag:リポジトリ名_〇〇を追記した)
       コマンドのdocker tagのあとにimageタグ名をつけて叩く×3つ分

  • ③新しく作成した AWS リポジトリにイメージをプッシュ
      表記してあるコマンド叩く

  • その後、課金増えないようにライフサイクルポリシールールを追記


知ったこと

build だけでなく image も指定できます。 Compose は image で指定したタグを使い、構築したイメージをタグ付けします。

madokamadoka

1/11 #5 主軸に参考した記事

これやってる目的:Laravel、docker、awsを使ってばあちゃんが使うアプリをデプロイする


1分でも良いから触ることにしているので、今日は他にすることあったから進めれなかったけどこれ書いたからオールオッケー!🎉

○ 明日以降すること:pullできるか確認してみる、デプロイ準備進める

madokamadoka

1/15 #7 AWSにpushしたイメージをpullする

  • $ docker imagesでイメージ一覧を出す
  • $ docker image rm -f イメージ名で作成したイメージを削除しておく
  • これ通りに進めようとして詰まった

エラー

repository does not exist or may require 'docker login': denied: Your authorization token has expired. Reauthenticate and try again.

  • dockerのログインしても同じエラーなのでdockerログインが原因ではない

イメージのプル元になる Amazon ECR レジストリに対して Docker クライアントを認証します。認証トークンは、使用するレジストリごとに取得する必要があり、トークンは 12 時間有効です

docker pull 〜〜〜してまだエラー内容変わらない詰まり

madokamadoka

1/20 #8  AWSにpushしたイメージをpullする

  • これ通りにしたらできた。。
    • 単純に、docker pull <awsリポジトリのURI>
  • 前できなかったのに寝かせたらできたみたい

デプロイする

AWS使った理由:更新したときに自動でデプロイできるようにしたいから

一番使いたいのは、「CodeDeploy 」なのでそれを基準に考える(CodeDeploy ↓)

ソースコードが変更されたり、新しいベースイメージが Amazon ECR にアップロードしたときは、継続的デリバリーパイプラインが自動的にコンテナイメージを構築してデプロイします。

ECSとは

  • AWS上でコンテナを管理するもの(アプリのデプロイ、スケーリング(調整))
  • コンテナを動かすための実行環境で、EC2、Fragate、オンプレミスの3つの種類がある
  • デプロイ方法
    • ①イメージ作成後、ECSのタスク定義を作成する
      • タスク定義(=アプリのブループリント(設計)JSON形式のテキストファイル)
    • ②タスク定義を(タスクorサービスとして)クラスターにデプロイする
      • ↑タスク定義のインスタンス化

ECSの実行環境(起動タイプ)、EC2かFragateか

  • EC2・・・自分で管理するサーバー
  • Fargate・・AWSが運用保守管理をしてくれるサーバー
    今回はCodeDeploy を使う→EC2を使用する

これで進める:step2から