uv
とDockerを使用した、モダンなPython CLIアプリケーション開発のテンプレートプロジェクトです。
このプロジェクトは、以下の技術スタックを使用してPython CLIアプリケーションを開発するためのベストプラクティスを示します:
- 🐍 Python 3.12: 最新のPython機能を活用
- ⚡ uv: 高速なPythonパッケージマネージャー(Rust製)
- 🐳 Docker & Docker Compose: 一貫した開発環境
- 🔧 Typer: モダンなCLIフレームワーク
- ✅ pytest: 包括的なテストフレームワーク
- 🎨 ruff: 高速なリンター・フォーマッター
- 🚀 GitHub Actions: 自動化されたCI/CDパイプライン
- 🔒 完全に再現可能な環境:
uv.lock
による厳密な依存関係管理 - 📦 最適化されたDockerイメージ: マルチステージビルドとレイヤーキャッシュ
- 🔄 ライブリロード: Docker Compose Watchによる開発効率向上
- 🛡️ 品質保証: pre-commitフック、自動テスト、リンティング
- 📚 包括的なドキュメント: セットアップから本番デプロイまで
python-docker-cli-app-template/
├── src/ # Pythonソースコード
│ └── my_app/
│ ├── __init__.py
│ └── cli.py # CLIエントリーポイント
├── tests/ # テストコード
│ └── test_cli.py
├── .github/workflows/ # CI/CD設定 (GitHub Actions)
├── docs/ # ドキュメント
├── .pre-commit-config.yaml # pre-commitフック設定
├── Dockerfile # 本番・開発兼用Dockerイメージ
├── compose.yml # Docker Compose設定
├── pyproject.toml # プロジェクト設定・依存関係
├── uv.lock # 依存関係ロックファイル
└── README.md # このファイル
詳細な手順は docs/CONTRIBUTING.md
を参照してください。
- Docker & Docker Compose
- Git
- (推奨)pre-commit
-
リポジトリのクローン
git clone https://github.com/gnkm/python-docker-cli-app-template.git cd python-docker-cli-app-template
-
Dockerイメージのビルドと依存関係の同期
docker compose build docker compose run --rm app uv sync
-
Gitフックのセットアップ (推奨)
pre-commit install
# ヘルプの表示
docker compose run --rm app my-app --help
# hello コマンドの実行
docker compose run --rm app my-app hello "World"
ソースコードの変更をコンテナに即時反映させるには、watch
モードを使用します。
docker compose watch
docker build -t my-app:latest .
docker run --rm my-app:latest my-app hello "Production"
プロジェクトへの貢献を歓迎します!
開発環境のセットアップ、テストの実行方法、CI/CDパイプライン、開発ワークフローなどの詳細については、docs/CONTRIBUTING.md
を参照してください。
- uv: Rustで実装された高速なPythonパッケージマネージャー(pipの10-100倍高速)
- Docker最適化: マルチステージビルドとレイヤーキャッシュによる効率的なイメージ構築
- 品質保証: 自動テスト、静的解析、継続的インテグレーションによる高品質なコード