はじめに
docker-composeでmysql環境を準備する
version: '3'
services:
backend:
container_name: backend
build:
context: ./
dockerfile: ./containers/backend/Dockerfile
volumes:
- ./backend/:/srv/backend
environment:
- TZ=Asia/Tokyo
ports:
- "8000:8000"
command: /root/.pyenv/versions/3.8.4/bin/python /srv/backend/manage.py runserver 0:8000
tty: true
networks:
- app-net
db:
image: mysql
container_name: db
command: --default-authentication-plugin=mysql_native_password
restart: always
volumes:
- ./db/:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: winlogic
MYSQL_USER: docker-user
MYSQL_PASSWORD: password
TZ: "Asia/Tokyo"
networks:
- app-net
ports:
- "3306:3306"
networks:
app-net:
driver: bridge
データベースの作成
# docker-compose up -d # docker exec -it db /bin/bash $ mysql -u root -p $ create database <データベース作成>;
mysqlclientについて
- mysqlclientはネイティブドライバーです。これが推奨される選択です。
[django 公式サイト]
mysqlclient is a native driver. It’s the recommended choice.
インストール
- alpine上でインストールする際にmysql-devをインストールしてからmysqlclientをインストールする
# docker exec -it backend /bin/ash $apk add mysql-dev #pip install mysqlclient
設定
- local_settings.pyファイルに下記の記述を追加する
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '<DB名>',
'USER': '<ユーザー名>',
'PASSWORD': '<パスワード>',
'HOST': 'db',
'PORT': '3306',
}
}
- mysql にadminやgroupなどのテーブルを作成する
# python manage.py migrate
- superuserの作成
# python manage.py createsuperuser