Django+MySQLとDockerを用いてTodoリストを作った話。
TODO
TodoListを作りました!
GitHub - fan-tech/todo: TodoListです。
はじめに
ベースは以下のサイトを参考にしています。
Django入門 | 初心者でも1時間でWebアプリ(Todoアプリ)を作成するコース | テックダイアリー
実はこのままではなくて、
DBの部分をMYSQL、色んな人のローカルで少しでも動きやすいようにDockerで環境構築できるようにしてあります。
お手元での動かし方
まずは、少し書き換えが必要です。
以下の部分を削除してください。
★config/settings.py
import os import environ ENV_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) env = environ.Env(DEBUG=(bool,False)) env.read_env(os.path.join(ENV_DIR,'.env')) SECRET_KEY = env('SECRET_KEY') DEBUG = env('DEBUG') ALLOWED_HOSTS = env.list('ALLOWED_HOSTS') # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent ~~~~~中略~~~~~~~ DATABASES = { 'default':env.db(), }
以下の部分を追記してください
SECRET_KEYは
python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
↑これで生成できそうな気がする。
Django: SECRET_KEY を再生成する - @kyanny's blog
★config/settings.py
# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = '新たに生成したものをお使いください。' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = [ '0.0.0.0', '127.0.0.1' ] ~~~~中略~~~~ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django_db', 'USER': 'root', 'HOST': 'db', 'PORT': 3306 } }
たぶんこれで、準備は完了!
必要なファイルはあるはずなので、
docker-compose build
docker-compose up -d db
docker-compose up -d web
docker-compose up
と入力
docker-compose exec web bash
これでdockerコンテナ内に移動します。
python manage.py makemigrations
python manage.py migrate
これでマイグレートして、
python manage.py runserver 0:8000
これで、サーバーを起動します。
0:8000これをつけないと動きませんので注意!
Djangoの開発サーバーをDockerコンテナで起動し、ホスト側からアクセスする方法
dockerコンテナ内で起動したものをホストからアクセスするはこの手順を踏む必要がありそう。
http://0.0.0.0:8000/
↑これをブラウザに入力すると、
この画面が出るはず!(はず!)
こんなかんじでタスクを追加しようとしたりできるはず。(はず!)
詳細画面もこのように見ることができるはず!(はず!)
最後に
主につまったのはdockerの準備とGitHubに公開するにあたって、隠さないと駄目っぽそうなものがあったので、それが上手にできなくて難しかったです!少し時間がかかりました。
TODOリスト本体は基本的にサイトを上から順番に見ながら書き写すとできました。
色々勉強できて楽しかったです!