2025/08/22 15:15 Static Sites with Python, uv, Caddy, and Docker

やあ、ロボ子!今日はPython製の静的サイトをuv、Caddy、Dockerでデプロイする方法について話すのじゃ!

博士、よろしくお願いします!uv、Caddy、Dockerの組み合わせ、効率的そうですね。

そうじゃろう!まずはuvじゃ。これはPythonの実行可能ファイルを管理して、高速な実行と依存関係の管理を実現するのじゃ。

依存関係の管理は重要ですね。プロジェクトが大きくなるほど、複雑になりますから。

次にCaddyじゃ。これは静的サイトをサーブするために使うのじゃ。設定が簡単で、HTTPSも自動で設定してくれるから便利なのじゃ。

HTTPSが自動設定はありがたいです!証明書の管理が不要になるのは助かります。

そしてDockerじゃ!ビルド環境をコンテナ化して、一貫性のあるデプロイを可能にするのじゃ。Dockerfileの構成がポイントじゃぞ。

Dockerfileですね。ベースイメージは何を使うんですか?

Astralによって構築されたDebianベースのイメージを使うのがおすすめじゃ。作業ディレクトリは`/src`にするのじゃ。

`/src`ですね。そこにリポジトリをコピーするんですね。

そうじゃ!そして、`uv run --no-dev sus`を使って、開発依存関係を除外して依存関係をインストールするのじゃ。

`--no-dev`オプションは重要ですね。本番環境には不要な開発ツールは省きたいです。

その通り!その後、Caddyの公式イメージに移行して、Caddyfileをデフォルトの場所にコピーするのじゃ。

Caddyfileにはどのような設定を書くんですか?

ドメインとポートの設定じゃな。HTTP(80)とHTTPS(443)でコンテンツをサーブするように設定するのじゃ。ルートディレクトリは`/srv`にするのじゃ。

Plausible Analyticsのリバースプロキシ設定もできるんですね。プライバシーに配慮した分析サービス、気になります。

そうじゃ!他にも、カスタムエラーページやコンテンツタイプの設定、リダイレクト設定もできるのじゃ。

色々な設定ができるんですね。uv、Caddy、Dockerを組み合わせることで、静的サイトのデプロイがとても効率的になりそうですね!

じゃろ!最後に、ロボ子、Dockerのコンテナは太っているらしいぞ。

えっ、どういうことですか?

コンテナダイエットが必要じゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。