🐍

Dockerコンテナ上で動くPythonの開発環境のテンプレートを作ってみた

2023/08/01に公開

GitHub上で色んな方のテンプレートを拝見しましたが、Dockerコンテナ上で開発することを想定したモノがあまりなかったので自分で作りました!

https://github.com/tamtam-fitness/python-template-based-on-docker

※ 2023/08/01時点ではPython3.10のイメージを使用

導入方法

Use this templateの場合

こちらは新規でPythonプロジェクトを開始する際にオススメです。

"Use this template"を押下し、任意の名前の新規のリポジトリを作成してください。

Cloneの場合

こちらはモノレポで複数のプロジェクトを管理する際に、新たなプロジェクトとしてPython環境を導入する際にオススメです。

導入するためのコマンド例を記載しますので参考にいただけたらと思います。

git clone https://github.com/tamtam-fitness/python-template-based-on-docker.git <new-project>

cd <new-project>

rm -rf .git

使い方

コンテナの立ち上げ

make setup

コンテナ内へのアクセス

make enter_container

Lint

make lint

Format

make format

Test

make format

特定のテストファイル/フォルダの実行

Poe the Poetを使用し実行します。

make enter_container

poetry shell

poe test tests/{file or directory you want to test}

インストール済みの主なパッケージ一覧

※ 2023/08/01時点

名称 バージョン 内容
poetry 1.5.1 Pythonのパッケージ管理を行うツール(こちらはpipで管理)
poethepoet 0.21.1 poetryを用いたTaskランナー(taskipyのようなもの)
pydantic 2.1.1 型アノテーションを利用した型のバリデーション(Dataclassesとの比較はこちら)
pydantic-settings 2.0.2 Pydanticを用いた設定管理
pyyaml 6.0.1 yamlファイルを処理(リポジトリで管理可能な環境変数をyamlに記載し読み込むために使用)
ruff 0.0.265 Rust製で書かれたリンター及びフォーマッター
black 23.7.0 コードのフォーマッター(Ruffは一部の機能が未実装のため補完のために使用)
mypy 1.4.1 静的解析による型チェッカー
pytest 7.4.0 Pythonのテスティングフレームワーク
pytest-cov 4.1.0 pytestのカバレッジを計測するプラグイン
pytest-mock 3.11.1 unittest.mock の薄いラッパーであるmockerを提供するプラグイン
pytest-env 0.8.2 pytest実行時のみに使われる環境変数を設定するために使われるプラグイン
sentry-sdk 1.29.0 SentryのPythonクライアント

おまけ

過去にAWS Lambda × FastAPI用のテンプレートを作ったことがあります。

詳細については以下の内容を参照いただけますと嬉しいです!

https://techblog.raksul.com/entry/2023/06/30/081048

https://techblog.raksul.com/entry/2023/06/30/142904

Discussion