前提・実現したいこと
dockerコンテナ内にdjangoプロジェクトを作成し、ホストPCのmariadbと接続してrunserverしたいです。
発生している問題・エラーメッセージ
djangoプロジェクト作成後、runserverコマンド実行で以下エラーが発生します。
django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)")
該当のソースコード
・settings.py
(略) ALLOWED_HOSTS = ['*'] (略) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django', 'USER': 'test_user', 'PASSWORD': 'test', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'charset': 'utf8mb4', }, } }
試したこと
・ホストの/var/lib/mysqlにmysql.sock作成
・ホストの/etc/mysql/mariadb.conf.d/50-server.cnfの「bind-address=127.0.0.1」をコメントアウト
→いずれもエラー内容に変化なし
補足情報(FW/ツールのバージョンなど)
・ホストOSはXubuntu、dockerコンテナ内OSはcentos7を使用しています
・ufwでホスト側の3306ポートが開いていることは確認しています
・ホスト側でのmariadbログインはできています(mysql -u test_user -P 3306 -p→パスワード入力でログイン)
その他追記すべき情報等ございましたらご指摘いただければ幸いです。
何卒よろしくお願いいたします。
追記(2/27)
ご指摘を受け、dockerの起動方法等について追記します。
・dockerコンテナ作成~起動
$ sudo docker pull centos:centos7 $ sudo docker run --name centos -itd -p 80:80 --privileged centos:centos7 /sbin/init $ sudo docker exec -it [コンテナID] bash →コンテナに入りdjango、mariadbインストール(nginx・uwsgiもインストールするが取り急ぎDBとの接続確認だけしたいので使用せず)
本番環境で稼働させることを考え、docker-composeは使用せずイメージのプルはOSのみとしています。
・dockerネットワーク構成
$ docker network ls NETWORK ID NAME DRIVER SCOPE 516********* bridge bridge local bd8********* host host local 3ee********* none null local $ docker network inspect bridge [ { "Name": "bridge", "Id": "516********************", "Created": "2021-02-27T15:31:52.454035418+09:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.17.0.0/16", "Gateway": "172.17.0.1" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": {}, "Options": { "com.docker.network.bridge.default_bridge": "true", "com.docker.network.bridge.enable_icc": "true", "com.docker.network.bridge.enable_ip_masquerade": "true", "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0", "com.docker.network.bridge.name": "docker0", "com.docker.network.driver.mtu": "1500" }, "Labels": {} } ]
回答1件
あなたの回答
tips
プレビュー