前回の記事 (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'),
}
}
MySQLを使うように編集
DATABASES = {
'default': {
'ENGINE': 'mysql.connector.django',
'NAME': 'データベース名をここに書く',
'USER': 'root',
'PASSWORD': 'パスワードをここに書く',
'HOST': 'db(こことdocker-compose.ymlのコンテナ名を連携させる。dbでもなんでも良い)',
'PORT': 3306,
}
}
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 (ここをsettings.pyのhost名と同じにしないと接続できない)
db: (ここをsettings.pyのhost名と同じにしないと接続できない)
image: mysql:5.7
environment:
MYSQL_DATABASE: データベース名
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: パスワード
tty: true
ports:
- 3306:3306
command: mysqld --character-set-server=utf8mb4 --explicit_defaults_for_timestamp=true
これで設定は完了です。下記コマンドを実行してブラウザで `localhost:8000`にアクセスできたら成功です!
$ docker-compose up