LoginSignup
1
3

More than 3 years have passed since last update.

Dockerコンテナ上でDjangoチュートリアルを実施

Last updated at Posted at 2021-04-06

はじめに

・「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 アプリ作成、その2

タイムゾーンで詰まる

  • django のチュートリアルでは、タイムゾーンを変更する手順がある。
  • Django側ではUTCからJSTに変更しても、OSの設定がUTCのままである場合に設定の差異が生まれる。
  • Ubuntu と django で、UTCJSTどちらかに揃える必要がある
  • どのような点に詰まったかは以下の通り。

mysite/settings.py を編集する際、 TIME_ZONE に自分のタイムゾーンも設定します。

※参照:はじめての Django アプリ作成、その2

・チュートリアル中の以下の場面でadminの画面にアクセスができなかった。

開発サーバーの起動¶
Django adminサイトはデフォルトで有効化されます。開発サーバーを起動して探索を始めましょう。

※参照:はじめての Django アプリ作成、その2

・mysite/settings.py で編集したTIME_ZONEをUTCに戻すことで接続できるようになった。

おわり

今の所上記の点に詰まりつつ解消しつつチュートリアルを進めている。が、あくまでチュートリアルを行うにあたっての設定が多いので、今後の作り込みに置いてこの設定のままではいられないこともあるのかなと怯えている。

1
3
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
1
3