Skip to content

inakam/strongest-news-cgg

Repository files navigation

クラウド・ゴールデン・ジム #4

直希評判記 暴れん坊コンテナ

暴れん坊コンテナ

出演:inakam、Penpen7
対象:Dockerによるコンテナ開発を検討している/行なっている方
技術:Docker/EC2/ECS/Fargate
番組詳細:
平社員から八代将軍となった直希は、入社の行列に命懸けで訴え出た少女の願いを聞き、
開発工数を吊り上げようと非効率な開発環境を構築した罪で捕われた中村屋の無実を晴らすべく立ち上がる。
若き直希が、理想の開発環境を実現すべく、単身身を投じてレガシーシステムを暴き断罪する
『暴れん坊コンテナ』始動編!

🎁 コンテナのビルドと起動

コンテナのビルド

docker-compose build

コンテナの起動

docker-compose up

以下を開くとそれぞれ表示されます。

DB 内部を直接見たい場合

  • MySQL8.0 のクライアントをインストールした後で以下を実行
    mysql -h 127.0.0.1 -u user -p password

FastAPI テスト実行

  • 以下を実行するとテスト用のコンテナが立ち上がり、テストが実行されます
    docker-compose run test pytest app/tests

📝 ハイレベルアーキテクチャ

💻 ローカル環境

ローカル環境

🌩 AWS 環境

AWS環境

🌩 AWS 環境(フロント App Runner 版)

AWS環境(フロントApp Runner版)

🤗 AWS EC2 上に立ち上げる

  1. AWS で EC2 のインスタンス(Amazon Linux 2)を立ち上げる
  2. EC2 インスタンスへ ssh 接続でログインする(ssh ec2-user@[ipアドレス]
  3. git clone [このリポジトリ]
  4. sudo sh ./ec2_docker_install_script.shを実行し、docker をインストール
  5. exitで一度 ssh 接続を解除し、もう一度 ssh 接続をする
  6. リポジトリのディレクトリでdocker-compose upを実行
  7. インスタンスのグローバル IP へアクセスし、表示されたら成功

🚀 AWS 環境で CodePipeline による ECS デプロイ

  1. aws configure --profile cggを実行し、AWS の認証情報を登録
  2. このリポジトリをgit clone
  3. strongest-news-terraform/variables.tf の内容を修正
    • sci_numbervpc_id などを書き換える
  4. AWS のコンソールで Terraform の state 用のバケットを作成
    • nifty-cgg-framework-sci0xxxx.nifty.comのような名前にして S3 バケット作成
  5. MySQL 8.0 のクライアントをインストール
    • Terraform 実行時に null_resource を使って初期データを Aurora に流し込むために使用します
    • Amazon Linux 2 の場合
      $ sudo yum localinstall -y http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
      $ sudo yum install -y mysql-community-client
  6. strongest-news-terraform フォルダの内容を実行
    1. cd ./strongest-news-terraform
    2. terraform init で初期化
    3. terraform apply で環境を構築
      • ここで出力された codecommit_address をメモ
  7. 構築された AWSCodecommit にアプリケーションをデプロイ
    1. 必要であれば、pip install git-remote-codecommitを行い、git で codecommit を操作できるようにする
    2. git remote codecommit [ここをcodecommit_addressにする]を実行し、codecommit へプッシュできるようにする
    3. git checkout main && git push codecommit HEAD
  8. CodePipeline のパイプラインを実行
  9. デプロイ後に表示されるaws_alb_frontend_urlにアクセスする

🎢 App Runner によるデプロイ

  • ECS デプロイが行われている前提で行います
  1. main.tfoutput.tfでコメントアウトされている部分のコメントアウトを外す
  2. terraform initで初期化
  3. terraform applyで環境を構築する
    • ECS デプロイ時にビルドされた ECR イメージを流用
  4. デプロイ後に表示されるfrontend_apprunner_urlにアクセスする
  5. mixed Content となりエラーになるため、ブラウザの「安全でないコンテンツ」を許可に変更する
    • バックエンド API へ http で接続しているため
  6. 実際に表示される

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published