10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Django×PostgreSQL on DockerをHerokuへデプロイしたメモ

Last updated at Posted at 2020-10-06

はじめに

学習のため、DjangoGirlsなどのチュートリアルで作成したDjangoアプリをDocker化した。そしてアプリをHerokuへデプロイしたい。チュートリアルでもHerokuのデプロイ方法は載っているので基本的にそれを参考にすればデプロイできる。分からなくなったら1,2度はローカルで環境構築、開発、デプロイをしてみると良いかもしれない

前提

heroku上にデプロイ予定のアプリを作成済み。
以下の管理インターフェースとは、mysiteなど自身で命名した名前。

手順

  1. Pythonライブラリのリストにherokuへ必要なパッケージを追加編集し、保存
requirements.txt
Django==2.2.16
psycopg2

# この下が新たに追加するライブラリ
dj-database-url
gunicorn
whitenoise==3.0.0

2.ルートディレクトリにProcfileを作成し、編集、保存

Procfile
web: gunicorn 管理インターフェース名.wsgi --log-file -

3.どのバージョンのPythonを使いたいのかをHerokuに知らせるため。

runtime.txt
python-3.6.4

4.開発環境ファイルを作成し、編集保存する
今回は開発環境でもpostgresqlなので、DATABASEの欄は自身のsettings.pyのデータベース設定をコピーする。
以下はサンプル。

管理インターフェース/local_settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

DEBUG = True

5.本番環境のため設定ファイルを編集する
こちらもデータベースの設定は各自の環境を設定

管理インターフェース/settings.py
import dj_database_url

...

DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com']

...

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': '5432',
    }
}

...

db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

6.wsgi.pyを編集する

管理インターフェース/wsgi.py
...
# Heroku
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)

7.herokuへデプロイする
herokuへのデプロイは大きくわけてコマンドラインから直接pushするか、Githubのコードを自動デプロイでき、どちらかの方法でherokuへコードをupします。

8.本番環境(heroku)のデータベースを設定する
herokuのサーバ上でマイグレーションを実行し、管理者ユーザーを作成します
こちらもコマンドラインとherokuのサイトから操作することも可能です

9.デプロイ成功
URLからきちんとデプロイできているか確認する

参考文献

https://tutorial-extensions.djangogirls.org/ja/heroku/
https://devcenter.heroku.com/articles/getting-started-with-python

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?