pythonでプロジェクトを作成する際のテンプレートです。
プロジェクトを初期化する際は、以下の手順で行ってください。
- このリポジトリをクローン
- .env.sampleを元に.envを作成
- 不要なファイルを削除
本リポジトリは、各種クラウドでの動作確認等を行うため、最小限+αの構成としています。
最小限の構成として利用する場合は、以下の手順で不要なファイルを削除してください。
make minimize
を実行- docker-compose.ymlからcredentialsのマウントを削除
- src/presentation/のサブディレクトリのうち、不要なフレームワークのディレクトリを削除
- .devcontainer/devcontainer.jsonのlaunchの設定のうち、不要なフレームワークの設定を削除
- README.mdを編集
- クラウド関係の環境変数を.envとsrc/settings.pyから削除
アプリケーションを実行する際は、以下の手順で行ってください。
make up
でDocker Composeを起動- http://localhost:<LOCAL_PORT>/ からアプリにアクセス
make down
でDocker Composeを終了
終了せずにDev Containerを起動すると、docker-compose.override.ymlの内容が上書きされずデバッグが利用できません。
アプリケーションの開発を行う際は、以下の手順で行ってください。
- pre-commitをインストール(ex.
pip install pre-commit
) pre-commit install
でpre-commitのhookスクリプトを導入- VSCodeでDev Container拡張機能をインストール
- コマンドパレット(
Ctrl+Shift+P
)からRemote-Containers: Reopen in Container
を実行 - (Docker Compose立ち上げ時のみ)拡張機能の依存関係の解決に失敗することがあるので、ウィンドウの再読み込みする
- F5でデバッグ実行が可能
- http://localhost:<LOCAL_PORT>/ からアプリにアクセス
FastAPIを利用する場合は、以下の手順で行ってください。
- 上記手順でAPIサーバーを起動
- live-server拡張機能で、src/presentation/fastapi/frontend/index.htmlを開く
- http://localhost:5500/src/presentation/fastapi/frontend/ からフロントエンドにアクセス
各クラウドへのデプロイを行う際は、以下の手順で行ってください。
Cloud Runへのデプロイを実施します
- サービスアカウントを作成し、そのcredentialファイルをcredentials/credential_gcp.jsonとして保存
- FirestoreのDBとCollectionを作成
make deploy-gcp
でCloud Runにデプロイ- (オプション)Cloud Monitoringのアラートから通知チャンネルを作成
- (オプション)Cloud Loggingからアラートを設定
App Runnerへのデプロイを実施します
- credentialsをcredentials/credentials_awsとして保存
ユーザーアカウントを利用する場合はcp ~/.aws/credentials credentials/credentials_aws
としてください make deploy-aws-infra
で、App Runnerに必要なリソースを作成・更新make deploy-aws
でApp Runnerにデプロイ
Container Appsへのデプロイを実施します
- Entra IDのアプリを登録からサービスプリンシパルを登録し、クライアントシークレットを発行する
- .envのAZURE_CLIENT_ID,AZURE_CLIENT_SECRETに各値を設定
- CosmosDBのデータベースとコレクションを作成
- サービスプリンシパルにCosmosDBへのアクセス権の付与
cf. https://learn.microsoft.com/ja-jp/azure/cosmos-db/how-to-setup-rbac
az cosmosdb sql role assignment create \ --account-name <CosmosDBのアカウント名> \ --resource-group <リソースグループ名> \ --scope "/" \ --principal-id <EntraIDのエンタープライズアプリケーションの該当アプリケーション(サービスプリンシパル)のオブジェクトID> \ --role-definition-id <ロールid=00000000-0000-0000-0000-000000000002>
make deploy-azure
でContainer Appsにデプロイ- (オプション)Application Insightsを作成
- (オプション)Application Insightsなどの監視/ログからアラートを設定
cf. https://yotiky.hatenablog.com/entry/azure_exceptionsalert