Django3 MariaDB接続

Django3 MariaDB接続

docker-composeでMariaDBを準備

Djangoプロジェクトカレントディレクトリにて下記内容にてdocker-compose.ymlファイルを作成
version : "3"
services:
  db:
    image: mariadb
    restart: always
    ports:
      - 3307:3306
    volumes:
      - "./mysql:/var/lib/mysql"
      - "./initdb.d:/docker-entrypoint-initdb.d"
    environment:
      - MYSQL_ROOT_PASSWORD=pwd
      - MYSQL_DATABASE=test
      - MYSQL_USER=user
      - MYSQL_PASSWORD=pwd

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
DjangoプロジェクトカレントディレクトリにてDockerコンテナをビルド
$ docker-compose build
db uses an image, skipping
adminer uses an image, skipping
Dockerコンテナを起動
$ docker-compose up -d
Creating network "security_system_default" with the default driver
Pulling db (mariadb:)...
latest: Pulling from library/mariadb
6a5697faee43: Pull complete
ba13d3bc422b: Pull complete
a254829d9e55: Pull complete
2ee2cadd29fc: Pull complete
6915a184049d: Pull complete
5ca6ffdb5f56: Pull complete
1537f7bbef8b: Pull complete
5790e54322d1: Pull complete
ea98cb829471: Pull complete
a46bde67834a: Pull complete
78334cd64cf3: Pull complete
5ffdad591cf6: Pull complete
Digest: sha256:2960a3d1ddb35dd454066b45005b4f694e18af76648833f1b9d93ab90cee7cf2
Status: Downloaded newer image for mariadb:latest
Pulling adminer (adminer:)...
latest: Pulling from library/adminer
188c0c94c7c5: Pull complete
45f8bf6cfdbe: Pull complete
ce5be7974012: Pull complete
a99dd6507fe5: Pull complete
84ab7a98c2ef: Pull complete
07fa46c284ad: Pull complete
7ae9397c88ea: Pull complete
5e4748577090: Pull complete
36fcf1c47c04: Pull complete
a190b0137493: Pull complete
e33b1564d2df: Pull complete
2ec83214bdcb: Pull complete
9143e4447235: Pull complete
1a15263e4f11: Pull complete
1a3ca31264b7: Pull complete
Digest: sha256:94f2f8703432f6cf80b4db8f8e6209b68541d815fb86713f0126540c638a1c7f
Status: Downloaded newer image for adminer:latest
Creating security_system_adminer_1 ... done
Creating security_system_db_1      ... done
Dockerコンテナが起動していることを確認
$ docker-compose ps
          Name                         Command               State           Ports         
-------------------------------------------------------------------------------------------
security_system_adminer_1   entrypoint.sh docker-php-e ...   Up      0.0.0.0:8080->8080/tcp
security_system_db_1        docker-entrypoint.sh mysqld      Up      0.0.0.0:3307->3306/tcp

WEBブラウザからAdminerに接続確認
`http://localhost:8080`

DjangoプロジェクトでDB接続設定

settings.pyにDB接続設定の記述
"""
DB設定
"""
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',  # DB名
        'USER': 'user',  # ユーザ名
        'PASSWORD': 'pwd',  # パスワード
        'HOST': 'localhost',  # ホスト
        'PORT': '8080',  # ポート
    }
}
Djangoサーバ起動
$ python manage.py runserver
DB接続成功なら下記メッセージ表示
Django version 3.1.3, using settings 'security_system.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です