Python3 + Django + MySQL5.7環境を作るシンプルなDocker環境構築セット。
https://docs.docker.jp/compose/django.html を参考。
MySQL側で ネイティブパスワードで接続するように指定しても、 Django側が caching_sha2_password を利用して接続しようとするため。
現時点では 2.2 (LTS)。
バージョンを指定してインストールしたい場合は、 requirements.txt の下記の行を修正する。
Django>=2.2,<2.3
例えば、次のLTSである 3.2 でインストールしたい場合は、次の通り修正する。
(ただし、現時点では、この方法では 3.2 をインストールすることはできない)
Django>=3.2,<3.3
となることが確定している。(2021/4リリース予定)
https://www.djangoproject.com/download/
MySQLを利用するためのログディレクトリが自動生成される。
$ cd /path/to/
$ ./FirstStep.sh下記コマンドでDockerイメージをビルドする。
$ cd path/to/
$ docker-compose run web django-admin.py startproject config .【コマンドの補足】
引数で指定したコンテナ内で、コマンドを実行する。
$ cd path/to/
$ docker-compose run <コンテナ名> <コマンド>つまり、 web サービスの中で、 django-admin startproject config . が実行される。
このコマンドは、 Django に対して、 Django プロジェクトを組み立てるファイル群の生成を指示するものである。
config の部分に指定した名前でディレクトリが作成され、その中に設定ファイル群が生成される。
www/config/settings.py から DATABASE と記載されている部分を探し、下記の内容で置き換える。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test_database',
'USER': 'docker',
'PASSWORD': 'docker',
'HOST': 'mysql',
'PORT': 3306,
}
}Webサーバのコンテナにログインし、DB migrateを実行する。
$ cd path/to/
$ docker-compose exec web bash # コンテナに入る
$ python manage.py migrate$ docker-compose up上記コマンドを実行後、 http://localhost にアクセスすると、 Djangoのデフォルトページが表示される。
DjangoはDBとの疎通が正常にできない場合、Django自体もアクセスできない状態となる。
一度MySQL8.0でイメージをビルドし、その後MySQL5.xを使用するように docker-compose.yml を書き換えてリビルドした場合、
MySQLが起動しなくなる現象が確認されている。
その場合、下記手順に従い、全てのコンテナ・イメージ・ボリュームを全て削除し、再度ビルドすることで、正常に起動するようになる。 https://qiita.com/astrsk_hori/items/6ca1ff27c911673ff7cc
$ cd path/to/
$ docker-compose exec web bash$ cd path/to/
$ docker-compose exec db bash