前回の記事 (https://nothing-behind.com/?p=61) でDocker + Djangoを使った環境構築手順をまとめました。今回はその環境でMySQLを使うための方法をまとめていこうと思います。

Requirements.txt

まずはrequirements.txtを編集していきます。MySQLへの接続には `mysql-connector-python`を使用します。

django mysql-connector-python

settings.py

djangoでは settings.py にデータベースの接続情報を書きます。デフォルトでは下記のようにSQLiteを使うようになっていますが、それをこれから編集していきます。

デフォルト

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
Code language: JavaScript (javascript)

MySQLを使うように編集

DATABASES = { 'default': { 'ENGINE': 'mysql.connector.django', 'NAME': 'データベース名をここに書く', 'USER': 'root', 'PASSWORD': 'パスワードをここに書く', 'HOST': 'db(こことdocker-compose.ymlのコンテナ名を連携させる。dbでもなんでも良い)', 'PORT': 3306, } }
Code language: JavaScript (javascript)

docker-compose.yml

djangoのコンテナとは別にデータベース用のコンテナを使うように編集していきます。

version: '3.7' services: django: restart: always build: . volumes: - ./:/projects command: /bin/sh -c "cd /projects; python manage.py migrate; python manage.py runserver 0:8000" ports: - 8000:8000 depends_on: - db (ここをsettingsttings.pyのhost名と同じにしないと接続できない5.7 environment: MYSQL_DATABASE: データベース名3306:3306 command: mysqld --character-set-server=utf8mb4 --explicit_defaults_for_timestamp=true
Code language: PHP (php)

これで設定は完了です。下記コマンドを実行してブラウザで `localhost:8000`にアクセスできたら成功です!

$ docker-compose up

By user