出演:inakam、Penpen7
対象:Dockerによるコンテナ開発を検討している/行なっている方
技術:Docker/EC2/ECS/Fargate
番組詳細:
平社員から八代将軍となった直希は、入社の行列に命懸けで訴え出た少女の願いを聞き、
開発工数を吊り上げようと非効率な開発環境を構築した罪で捕われた中村屋の無実を晴らすべく立ち上がる。
若き直希が、理想の開発環境を実現すべく、単身身を投じてレガシーシステムを暴き断罪する
『暴れん坊コンテナ』始動編!
docker-compose build
docker-compose up
以下を開くとそれぞれ表示されます。
-
React(Frontend) : http://localhost
-
FastAPI(Backend) : http://localhost:5000
-
SwaggerUI : http://localhost:5000/docs
- MySQL8.0 のクライアントをインストールした後で以下を実行
mysql -h 127.0.0.1 -u user -p password
- 以下を実行するとテスト用のコンテナが立ち上がり、テストが実行されます
docker-compose run test pytest app/tests
- AWS で EC2 のインスタンス(Amazon Linux 2)を立ち上げる
- EC2 インスタンスへ ssh 接続でログインする(
ssh ec2-user@[ipアドレス]
) git clone [このリポジトリ]
sudo sh ./ec2_docker_install_script.sh
を実行し、docker をインストールexit
で一度 ssh 接続を解除し、もう一度 ssh 接続をする- リポジトリのディレクトリで
docker-compose up
を実行 - インスタンスのグローバル IP へアクセスし、表示されたら成功
aws configure --profile cgg
を実行し、AWS の認証情報を登録- このリポジトリを
git clone
- strongest-news-terraform/variables.tf の内容を修正
sci_number
やvpc_id
などを書き換える
- AWS のコンソールで Terraform の state 用のバケットを作成
nifty-cgg-framework-sci0xxxx.nifty.com
のような名前にして S3 バケット作成
- 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
- strongest-news-terraform フォルダの内容を実行
cd ./strongest-news-terraform
terraform init
で初期化terraform apply
で環境を構築- ここで出力された codecommit_address をメモ
- 構築された AWSCodecommit にアプリケーションをデプロイ
- 必要であれば、
pip install git-remote-codecommit
を行い、git で codecommit を操作できるようにする git remote codecommit [ここをcodecommit_addressにする]
を実行し、codecommit へプッシュできるようにするgit checkout main && git push codecommit HEAD
- 必要であれば、
- CodePipeline のパイプラインを実行
- デプロイ後に表示される
aws_alb_frontend_url
にアクセスする
- ECS デプロイが行われている前提で行います
main.tf
とoutput.tf
でコメントアウトされている部分のコメントアウトを外すterraform init
で初期化terraform apply
で環境を構築する- ECS デプロイ時にビルドされた ECR イメージを流用
- デプロイ後に表示される
frontend_apprunner_url
にアクセスする - mixed Content となりエラーになるため、ブラウザの「安全でないコンテンツ」を許可に変更する
- バックエンド API へ http で接続しているため
- 実際に表示される