Contents
はじめに
HerokuはDjangoアプリケーションのクラウドデプロイにおいて人気のあるプラットフォームですが、ユーザーごとに目的や技術スタックが異なります。本記事では一般的なHerokuデプロイフローとDocker Compose・Gunicornを活用した最適化手順の両方を解説し、初心者から上級者まで対応できるよう構成しました。
Herokuへのデプロイの基本フロー
Herokuへのデプロイは以下4つの主要ステップで実施されます。技術スタックやプロジェクト規模に応じてアプローチを調整できます。
- Heroku CLIによる初期設定(アカウント作成・リポジトリ連携)
- ProcfileとGunicornでの起動コマンド定義
- 環境変数管理とセキュリティ対策の実施
- Docker Composeを活用したローカル/本番環境の一貫性確保
Heroku CLIを使用する際の基本事項
Heroku CLIは、プロジェクト初期化やデプロイに必須のツールです。以下に主な設定手順を整理しました。
Herokuアカウントの作成とCLIインストール
- Heroku公式サイトでアカウントを作成します。
- CLIは公式ページからダウンロードし、PCにインストールします。
注意: デプロイ前には
heroku loginコマンドで認証を確実に行い、アクセス権を取得してください。
Procfileの作成とDyno起動設定
ProcfileはHerokuでアプリケーションを起動するための定義ファイルです。以下に主な構文と役割を解説します。
Procfileの基本構文と役割
|
1 2 3 |
web: gunicorn myapp.wsgi --bind 0.0.0.0:$PORT worker: python manage.py runserver |
ポイント:
gunicornはWSGIサーバーで、DjangoアプリケーションをHTTP通信可能にします。
Web Dynoの指定方法
Web Dynoは、アプリケーションにアクセスする際のエントリーポイントです。ポート番号を自動取得するには以下のように記述します:
|
1 2 |
web: gunicorn myapp.wsgi --bind 0.0.0.0:$PORT |
注意:
$PORTはHerokuが動的に割り当てるポート番号を表します。
Worker Dynoの追加オプション
バックグラウンド処理(例: Celeryタスク)を行うにはWorker Dynoを追加します。以下のようにProcfileに記述します:
|
1 2 |
worker: celery -A myapp worker --loglevel=info |
環境変数管理とセキュリティ対策
セキュリティ強化のため、SECRET_KEYなどの機密情報は本番環境でハードコーディングしないようにします。
Heroku Config Varsの設定方法
Heroku CLIから環境変数を設定するには以下のようにコマンドを使用します:
|
1 2 |
heroku config:set SECRET_KEY=your-secret-key |
注意:
.envファイルでローカル開発用に仮想的な環境変数を定義し、.gitignoreに登録する必要があります。
SECRET_KEYの安全な管理方法
Djangoアプリケーションではsettings.pyで以下のように読み込みます:
|
1 2 3 4 5 6 |
import os from dotenv import load_dotenv load_dotenv() SECRET_KEY = os.environ.get('SECRET_KEY') |
| 項目 | 内容 | 補足 |
|---|---|---|
| 環境変数の管理 | .envファイルとHeroku Config Varsを組み合わせる |
本番環境では.envはリポジトリに含めない |
| セキュリティ対策 | DEBUG=False, ALLOWED_HOSTSの設定等を確認 |
ローカル開発用と本番環境で分離 |
Gunicornとの連携設定
GunicornはDjangoアプリケーションの起動に使われるWSGIサーバーです。以下に主な設定ポイントを整理しました。
wsgi.pyの調整ポイント
wsgi.pyファイルでは、アプリケーションを正しく参照できるようにします:
|
1 2 3 4 |
from django.core.wsgi import get_wsgi_application application = get_wsgi_application() |
Gunicorn起動コマンドの最適化
以下のようにProcfileに記述することで、ポート番号を自動取得できます:
|
1 2 |
web: gunicorn myproject.wsgi --bind 0.0.0.0:$PORT |
推奨バージョン:
gunicornは21.x以上が推奨されます。
Docker Composeによるローカル環境構築
Heroku環境と同等なローカル開発環境を作成するには、Docker Composeが最適です。以下に具体的な手順を紹介します。
Docker Composeの構成例
docker-compose.ymlファイルでデータベースを定義します:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
version: '3.8' services: db: image: postgres:15 environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: mydb volumes: - db_data:/var/lib/postgresql/data volumes: db_data: |
ローカルでのDynoシミュレーション方法
Docker Composeを使用すると、ローカルでHerokuのDynoを再現できます。以下のようにコマンドを実行します:
|
1 2 |
docker-compose up -d |
本番環境へのデプロイ手順
いよいよHerokuにアプリケーションを配備する手順です。
git push heroku mainの実行手順
ローカルリポジトリをHerokuにプッシュするには、以下のようにコマンドを実行します:
|
1 2 3 4 |
git add . git commit -m "Deploy to Heroku" git push heroku main |
デプロイログの確認方法
デプロイ中のログは以下のようにして確認できます:
|
1 2 |
heroku logs --tail |
まとめと補足情報
本記事ではDjangoプロジェクトをHerokuにデプロイする際の手順や注意点について解説しました。以下のポイントを再確認してください。
- ProcfileとGunicornによるアプリケーション起動設定
- 環境変数管理には
.envファイルやdjango-environを活用 - Docker Composeでローカル/本番環境の構成を一致させる
注意: 記述時点(2023年)の技術情報に基づいています。Django 4.2以降やHerokuの最新機能については、公式ドキュメントを参照してください。