はじめに
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