画像や動画内の対象アイテムをカウントするサンプルアプリです。
Python と pip がインストールされていることを確認してください。
python --version
pip --version
ルート ディレクトリから次のコマンドを実行して依存関係をインストールします: pip install -r requirements.txt
次のコマンドを使用してアプリを実行できます: python -m uvicorn src.api.index:app --reload
実行したら、 http://127.0.0.1:8000/docs
に移動して、対話型 API ドキュメントを表示できます。
このリポジトリ内のコードを適切に実行して開発できるようにするには、いくつかの手順を実行する必要があります。
以下は、このリポジトリのパイプラインの作業/テストを開始する前に実行する必要がある手順のリストです。
プロジェクトには、このプロジェクトとの対話をよりスムーズにするコマンドの実行に使用できるMakefile
( Windows ではサポートされていません! ) が付属しています。フォルダー名にスペースが含まれていると問題が発生する可能性があることに注意してください。
次の方法で、利用可能なオプションをすべて確認できます。
$: make
Available rules:
add-licenses Add licenses to Python files
all-start Starts both the API service and the local development service
all-stop Stops both the API service and the local development service
all-web Open up all web endpoints
api-build Build API image
api-start Start API image container
api-stop Stop API image container
api-web Open API in web browser
clean Removes artifacts from the build stage, and other common Python artifacts.
clean-build Remove build artifacts
clean-images Clean left-over images
clean-model-files Remove files related to pre-trained models
clean-pyc Removes Python file artifacts
clean-secrets Removes secret artifacts - Serverless
clean-test Remove test and coverage artifacts
create-environment Creates the Python environment
create-envrc Set up the envrc file for the project.
delete-environment Deletes the Python environment
delete-envrc Delete the local envrc file of the project
destroy Remove ALL of the artifacts + Python environments
docker-local-dev-build Build local development image
docker-local-dev-login Start a shell session into the docker container
docker-local-dev-start Start service for local development
docker-local-dev-stop Stop service for local development
docker-prune Clean Docker images
git-flow-install Install git-flow
init Initialize the repository for code development
lint Run the ' pre-commit ' linting step manually
pip-upgrade Upgrade the version of the ' pip ' package
pre-commit-install Installing the pre-commit Git hook
pre-commit-uninstall Uninstall the pre-commit Git hook
requirements Install Python dependencies into the Python environment
show-params Show the set of input parameters
sort-requirements Sort the project packages requirements file
streamlit-app-build Build Streamlit App image
streamlit-app-start Start Streamlit App image container
streamlit-app-stop Stop Streamlit App image container
streamlit-app-web Open Streamlit App in web browser
test Run all Python unit tests with verbose output and logs
注:
Windows
使用している場合は、一部のタスクのMakefile
の一部であるコマンドをコピーして、ある程度変更する必要がある場合があります。
現在の/新しい機能に取り組むために、 Docker を使用して新しいコンテナを起動し、ローカル開発プロセスを開始できます。
Docker イメージを構築するには、次の手順に従う必要があります。
Makefile
使用して次のコマンドを実行します。 # Go the project's directory
cd /path/to/directory
# Build the Docker iamge and start a container
make docker-local-dev-start
# Log into the container
make docker-local-dev-login
# Log into the container
➜$: make docker-local-dev-login
direnv: error /opt/program/.envrc is blocked. Run ` direnv allow ` to approve its content
direnv
がインストールされており、変更を有効にする必要があるため、direnv
エラーが表示されます。
direnv
変更を許可します # Accept the changes
$: direnv allow
direnv: loading /opt/program/.envrc
init
コマンドを使用して簡単に実行できます。 $: make init
これにより、次のタスクが実行されます。
direnv
で使用される.envrc
ファイルを初期化します。direnv allow
適用して、 direnv
変更を許可します。pip
経由でパッケージ要件をインストールするpre-commit
インストールします。git-flow
インストールします。これらの手順により、ユーザーは Docker 内で新しい機能を開発できるようになり、開発者はまったく同じツールのセットを簡単に利用できるようになります。
このプロジェクトには、Docker 経由で API エンドポイントを開始および停止するためのすぐに使用できるソリューションが付属しています。
API エンドポイントを使用してコンテナーを起動するには、次のコマンドを実行する必要があります。
# Start API service
make api-start
このサービスは、内部ポート80
ローカル ホストのポート8090
に公開する Docker コンテナを起動します。イメージが構築され、コンテナーが開始されたら、次のコマンドを使用してサービスのメイン ページに移動できます。
# Go the URL of the API endpoint
make api-web
これにより、ユーザーは次の URL にリダイレクトされます: http://localhost:8090/docs
API サービスを停止するには、次のコマンドを実行します。
# Stop the API service
make api-stop
新しい機能などを追加して FastAPI をカスタマイズすると、これらの変更が上記の URL に自動的に表示されます。
上のセクションと同様に、 all-start
とall-stop
という 2 つのコマンドを使用して、すべてのサービスを一度にスピンアップまたはスピンダウンできます。
APIサービスとローカル開発用の API サービスの両方を起動するには、次のコマンドを実行します。
make all-start
このコマンドは両方のサービスを実行し、ローカル開発のためにコンテナにログインしたり、ブラウザ経由で API に接続したりできるようになります。
同様に、すべてのサービスをスピンダウンするには、次のコマンドを実行するだけです。
make all-stop
これにより、両方のサービスが停止され、未使用の Docker コンテナーがすべて削除されます。
単体テストは、ソース コードと並んでsrc
フォルダーの下にあります。テスト ファイルは_test
で終わります。次のコマンドはすべてのテストを実行します。
python -m pytest -v -s
-v
引数は詳細出力用です。 -s
引数は、キャプチャ モードをオフにして、print ステートメントがコンソールに出力されるようにするためのものです。
これらを実行するための Makefile コマンドも存在します。 make test
参照してください。
このプロジェクトを操作するときに役立つコマンドのリストを次に示します。
すべての Docker コンテナを一覧表示します。
docker ps -a
ローカル開発を容易にするために、VS Code 用の Visual Studio Code Dev Containers 拡張機能をインストールできます。これにより、ローカル開発 Docker コンテナに接続し、機能をより簡単に開発できるようになります。