技術ブログのコンテンツ管理システム(CMS)です。Docker、Django、Nginx を使用した最新のウェブアプリケーションプラットフォームです。
- 🔒 SSL/TLS による HTTPS 対応(Let's Encrypt)
- 🐳 Docker による完全コンテナ化
- 🎯 CI/CD パイプライン(GitHub Actions)
- 🔄 自動証明書更新
- 📊 テスト自動化と品質管理
- Web フレームワーク: Django 4.x
- Web サーバー: Nginx
- アプリケーションサーバー: Gunicorn
- データベース: PostgreSQL 16
- キャッシュ: Redis
- コンテナ化: Docker & Docker Compose
- CI/CD: GitHub Actions
techblog_cms/ # 正系統の Django アプリケーション
├── templates/ # Django テンプレート
├── static/ # CSS / JavaScript / 画像などの静的資産
├── tests/ # pytest ベースのテスト
├── settings.py # 環境変数を使う基本設定
└── urls.py / views.py # URL ルーティングとビュー
docker/ # Django コンテナのエントリポイントなど
nginx/ # Nginx 設定
scripts/ # 証明書更新や運用補助スクリプト
.github/workflows/ # CI/CD ワークフロー
静的資産は techblog_cms/static/ に集約しています。テンプレート配下には CSS/JavaScript を配置しない方針です。
- Docker および Docker Compose がインストールされていること
- Git がインストールされていること
# リポジトリのクローン
git clone https://github.com/dendencat/techblog_cms.git
cd techblog_cms
# 環境変数の設定
cp .env.example .env
# .env ファイルを編集して適切な値を設定
# アプリケーションの起動
docker compose up -d# 証明書の初期化と取得
chmod +x scripts/init-letsencrypt.sh
sudo ./scripts/init-letsencrypt.sh# テストの実行
python -m pytest -v開発環境では以下の機能が利用可能です:
- ホットリロード
- デバッグモード
- 開発用サーバー(localhost:8000)
GitHub Actions による自動デプロイが設定されています:
mainブランチへのプッシュで自動的にテストが実行- テスト成功後、Docker イメージを GitHub Container Registry にプッシュ
- セキュリティスキャン(Trivy)の実行
- HTTPS 強制リダイレクト
- 最新の TLS 設定
- セキュリティヘッダーの適切な設定
- 定期的な依存関係の更新
このプロジェクトは MIT ライセンスの下で公開されています。
- このリポジトリをフォーク
- 新しいブランチを作成 (
git checkout -b feature/amazing-feature) - 変更をコミット (
git commit -m 'Add amazing feature') - ブランチをプッシュ (
git push origin feature/amazing-feature) - プルリクエストを作成