DjangoとDockerを用いた開発環境の構築とCRUD操作、そしてCloud Runへのデプロイ
Djangoを使用した開発を始めるにあたり、Dockerで開発環境と本番環境のセットアップを行いました。
以下のGitHubリポジトリでは、Djangoで作成した簡単なCRUDアプリケーションとそのDocker環境を公開しています。データベースとしてPostgreSQLを使用しています。
前提条件
- Dockerがインストールされていること
- Docker Composeがインストールされていること
環境設定手順
-
まず、このリポジトリをクローンします:
git clone git@github.com:pop-web/django-docker-test-env.git
-
クローンしたディレクトリに移動します:
cd django-docker-test-env
-
ルートディレクトリに
.env
ファイルを作成し、以下の環境変数を設定します(必要に応じて値を変更してください):DB_NAME=postgres DB_USER=postgres DB_PASSWORD=password ALLOWED_HOSTS=localhost,127.0.0.1
アプリケーションの起動方法
開発環境と本番環境に対応したDockerfile
とdocker-compose.yml
を用意しました。
開発環境用の設定ファイル
Dockerfile.dev
docker-compose.dev.yml
本番環境用の設定ファイル
Dockerfile.prod
docker-compose.prod.yml
開発環境の起動
Docker Composeを使用して開発環境のアプリケーションとデータベースを起動します:
docker-compose -f docker-compose.dev.yml build
docker-compose -f docker-compose.dev.yml up
これらのコマンドを実行した後、ブラウザでhttp://localhost:8000/myapp/hello/
にアクセスすると、Djangoアプリケーションが表示されます。
Cloud Runへデプロイ
-
Google Cloud SDKのインストール
Google Cloud SDKをインストールすることで、コマンドラインからGoogle Cloudプロダクトを管理することが可能になります。インストールの手順は公式ドキュメントを参照してください。
-
Google Cloud SDKの初期設定
インストール後、gcloud init コマンドを使ってGoogle Cloud SDKを初期化します。このコマンドを実行すると、ログインを求められます。ログインに成功すると、プロジェクトとデフォルトの設定リージョンを選択するように求められます。
gcloud init
-
Dockerイメージのビルド
まず、Dockerfileが存在するディレクトリに移動します。次に、以下のコマンドを使ってDockerイメージをビルドします。ここではアプリケーション名として適切な名前を指定します。
docker build --platform linux/amd64 -f Dockerfile.prod -t asia-northeast1-docker.pkg.dev/my-project-id/my-project/my-image:tag .
-
Dockerイメージのプッシュ
Google Cloud SDKに含まれるDocker認証ヘルパーを使って、Google Container Registryにイメージをプッシュします。
docker push asia-northeast1-docker.pkg.dev/my-project-id/my-project/my-image:tag
-
Cloud Runへのデプロイ
以下のコマンドを使って、Cloud Runにアプリケーションをデプロイします。
gcloud run deploy django-project --image asia-northeast1-docker.pkg.dev/my-project-id/my-project/my-image:tag --platform managed --region asia-northeast1
注意事項
本番環境への適用には、セキュリティやパフォーマンスに関する追加の対策や調整が必要となります。具体的には以下のようなことを考慮する必要があります:
- DEBUGモードは無効化する(本番環境ではFalseに設定する)
- SECRET_KEYは安全に管理する
- データベースは本番用のものを設定する
- 適切なロギング設定を行う
- 本番環境に適したWebサーバ(Gunicornなど)を使用する
さらに、Cloud Runへのデプロイを行う際はDockerfile.prodとdocker-compose.prod.ymlを使用してビルドとデプロイを行います。Dockerfile.prodではGunicornを使用してアプリケーションを実行します。
また、Djangoの静的ファイルの扱いには注意が必要です。Djangoはデフォルトでは静的ファイルを提供しないため、本番環境では適切な方法で静的ファイルを扱う必要があります。Djangoのcollectstatic
コマンドを使用するか、Cloud Storageなどを使用する方法があります。
以上がDjangoとDockerを使用した開発環境のセットアップ方法になります。より深く理解するためには、公式ドキュメンテーションを読んだり、具体的な問題に直面したときには適切なリソースを探すことを推奨します。
Discussion