はじめに
naritomoと申します。
サーバーレスサイト開発周りを調査したところ、SPAに対応させたフロント/バックエンドを分離したサイト開発に興味を持ち、第一号開発としてToDoサイトを作ってみました。
いろいろアドバイスいただけると嬉しいです。
立ち上げ概要
ToDoサイトの構成として以下のものとしています。
- フロントエンドはReactを使用する。
- バックエンドはFastAPIを使用する。
- DBはMySQLを使用する。
- フロンド/バック間通信はRESTAPIを使用する。
必要なソースは以下にまとめてあります。
参考書籍/サイト
本書籍/サイトにより、かなり理解が進みました。
ありがとうございます。
構築方法
予め展開先でgit/docker-composeを使用できていること。
展開方法
git clone https://github.com/naritomo08/todosite.git
cd todosite
touch front/.env.development.local
vi front/.env.development.local
以下の内容で作成する。
REACT_APP_BURL = "http://localhost:8000"
→外のサーバーで動かす場合、localhostを任意のIPにする。
docker-compose build
docker-compose run --entrypoint "poetry install --no-root" fastapi-app
docker-compose up -d
5分程待ってから実施
docker-compose exec fastapi-app poetry run python -m api.migrate_db
TODOサイト確認
以下のURLにアクセスし、ToDoサイトAPI管理画面が出てくること。
各種API操作ができること
以下のURLにアクセスし、ToDoサイトトップ画面が出てくること。
ToDoリストの登録/完了リストへの移動/リスト削除を行えること。
各種コンテナログイン
Reactコンテナログイン
docker-compose exec react-app bash
FastAPIコンテナログイン
docker-compose exec fastapi-app bash
DBマイグレートコマンド
poetry run python -m api.migrate_db
APIユニットテストコマンド
poetry run pytest
DBコンテナログイン
docker-compose exec db bash
DBバックアップ
cd /dump
mysqldump -u root -ppassword --single-transaction --all-databases --events > mysql_dump.sql
DBリストア
db/dump内にバックアップファイルを置く。
cd /dump
mysql -u root -ppassword < mysql_dump.sql
DB管理ツールログイン
adminer(DB管理ツール)
- ログイン情報
- サーバ: db
- ユーザ名: admin
- パスワード: password
- データベース: demo
おわりに
本サイトについて駆け足で作成しているところもあるため、
自分でも誤りや問題に気づきましたら修正いたします。
気になるところなどありましたら、色々コメント頂けますと
嬉しいです。