Skip to content

same-san-develop/Docker-with-Python3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker with Django + Python3

Python3 + Django + MySQL5.7環境を作るシンプルなDocker環境構築セット。

https://docs.docker.jp/compose/django.html を参考。

備考:MySQL8を使用しない理由

MySQL側で ネイティブパスワードで接続するように指定しても、 Django側が caching_sha2_password を利用して接続しようとするため。

インストールされるDjangoのバージョン

現時点では 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/

初回のみ実行(ビルド〜DB設定まで)

ディレクトリ・ファイルの自動生成

MySQLを利用するためのログディレクトリが自動生成される。

$ cd /path/to/
$ ./FirstStep.sh

Dockerイメージのビルド

下記コマンドで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 の部分に指定した名前でディレクトリが作成され、その中に設定ファイル群が生成される。

DB接続設定

www/config/settings.py から DATABASE と記載されている部分を探し、下記の内容で置き換える。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test_database',
        'USER': 'docker',
        'PASSWORD': 'docker',
        'HOST': 'mysql',
        'PORT': 3306,
    }
}

DBマイグレーション

Webサーバのコンテナにログインし、DB migrateを実行する。

$ cd path/to/
$ docker-compose exec web bash # コンテナに入る
$ python manage.py migrate

開発時に都度実行

コンテナ起動

$ docker-compose up

上記コマンドを実行後、 http://localhost にアクセスすると、 Djangoのデフォルトページが表示される。

アクセスできない場合(MySQLが Exit Code 2 により起動しない場合)

DjangoはDBとの疎通が正常にできない場合、Django自体もアクセスできない状態となる。

一度MySQL8.0でイメージをビルドし、その後MySQL5.xを使用するように docker-compose.yml を書き換えてリビルドした場合、
MySQLが起動しなくなる現象が確認されている。

その場合、下記手順に従い、全てのコンテナ・イメージ・ボリュームを全て削除し、再度ビルドすることで、正常に起動するようになる。 https://qiita.com/astrsk_hori/items/6ca1ff27c911673ff7cc

コンテナログイン(Webサーバ)

$ cd path/to/
$ docker-compose exec web bash

コンテナログイン(DBサーバ)

$ cd path/to/
$ docker-compose exec db bash

About

Python3 + Django + MySQL5.7 のシンプルなDocker環境

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published