#はじめに
・「dockerで開発環境用意してみようかな!」「Djangoのチュートリアルをおさらいがてらやるか!」という思いつきの結果散々詰まった。解消できた項目について記述していく。
###環境
・macOS Mojave 10.14.3
・docker 20.10.5
・Ubuntu 18.04
・Python 3.8.1
・Django 3.1.7
#注意
- あくまで「個人利用」での環境における話です。商用利用などの場合は当てはまらないケース(DBの向き不向きや利用可否など)があります。
- あくまでも、個人利用の上でdjangoのチュートリアルを実施する場合の記述になります。
- 実際に初めてDockerを使ってみた上での記述です。誤りや勘違いが含まれている可能性があります。
- そもそもこの記事が人生初qiita記事です。不慣れな点ばかりですが、ご指摘等いただけましたら幸いです。
###ポート指定してコンテナをたてないとダメ
- ホストのポートとコンテナのポートが紐づいていないとアクセスできないため、指定する必要がある。
- 以下では、「ホスト:コンテナ」としてオプションで指定している。
docker run -it -d -p 8000:8000 --name myubuntu ubuntu:18.04
・上記におけるオプション-p 8000:8000
にてポートを指定
※参考:DockerとDjango:runserverしてもlocalhostにアクセスできない
・runserverするときにポート指定することに留意
python3 manage.py runserver 0:8000
ブラウザにて http://localhost:8000/ にアクセスが可能となった
###「MySQL」は相性が悪そうなので使わない
- 「使い慣れている(つもり)」のMySQLにしておこう。という理由のみで使おうとしたが、様々な面で詰まった。
- 推奨しない方も多いように見受けられるので使わない。
- どのような点に詰まったかは以下の通り。
・MySQLのrootユーザの情報はdjangoでは扱えない場合がある(別のユーザを登録する必要がある)
※参考:pythonでmysqlに接続できない
・匿名ユーザが邪魔をすることがあり手間がかかる
※参考:MySQLの罠?ユーザー名指定しても匿名ユーザーログインになる
・SQLlightであればあれこれ設定しなくてもdjangoのチュートリアルがスムーズに進められる
SQLite を使っている場合は、前もってすることはありません。必要であればデータベースファイルが自動で生成されます。
###タイムゾーンで詰まる
- django のチュートリアルでは、タイムゾーンを変更する手順がある。
- Django側では
UTC
からJST
に変更しても、OSの設定がUTC
のままである場合に設定の差異が生まれる。 - Ubuntu と django で、
UTC
かJST
どちらかに揃える必要がある - どのような点に詰まったかは以下の通り。
mysite/settings.py を編集する際、 TIME_ZONE に自分のタイムゾーンも設定します。
・チュートリアル中の以下の場面でadminの画面にアクセスができなかった。
開発サーバーの起動¶
Django adminサイトはデフォルトで有効化されます。開発サーバーを起動して探索を始めましょう。
・mysite/settings.py で編集したTIME_ZONEをUTC
に戻すことで接続できるようになった。
#おわり
今の所上記の点に詰まりつつ解消しつつチュートリアルを進めている。が、あくまでチュートリアルを行うにあたっての設定が多いので、今後の作り込みに置いてこの設定のままではいられないこともあるのかなと怯えている。