質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2743閲覧

dockerでpymysqlを動かす際にcan't connect to MySQL serverとエラーが出てしまいます。

djanbo

総合スコア1

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

1クリップ

投稿2020/05/27 12:04

編集2020/06/04 10:25

前提・実現したいこと

docker上でエラーなく、DjangoのChannelsを用いたサンプルチャットアプリを動かしたいです。まずは、GithubのReadme.mdに書かれていたように動かしていたのですが、エラーが出てしまい、できるだけ怪しいところを調べて修正してみたりしたのですが、全てダメでした。(知識不足なのでそれほどたくさんのことも試せていませんが...)

発生している問題・エラーメッセージ

django_1 | File "/usr/local/lib/python3.6/socket.py", line 745, in getaddrinfo django_1 | for res in _socket.getaddrinfo(host, port, family, type, proto, flags): django_1 | socket.gaierror: [Errno -2] Name or service not known django_1 | django_1 | During handling of the above exception, another exception occurred: .................... django_1 | pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'mysql' ([Errno -2] Name or service not known)") .................... mysql_1 | 2020-06-04 10:23:22+00:00 [Note] [Entrypoint]: Initializing database files mysql_1 | mysqld: [Warning] World-writable config file '/etc/mysql/my.cnf' is ignored. mysql_1 | 2020-06-04T10:23:22.988744Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). mysql_1 | 2020-06-04T10:23:23.001398Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting. mysql_1 | 2020-06-04T10:23:23.001908Z 0 [ERROR] Aborting mysql_1 | channels_demo-master_mysql_1 exited with code 1

該当のソースコード

settingpy

1import pymysql 2pymysql.install_as_MySQLdb() 3 4DATABASES = { 5 'default': { 6 'ENGINE': 'django.db.backends.mysql', 7 'NAME': 'test', 8 'USER': 'test', 9 'PASSWORD': 'test', 10 'HOST': 'mysql', 11 'PORT': 3306, 12 'OPTIONS': {'charset': 'utf8mb4'} 13 } 14}

Dockercomposeyml

1... 2 mysql: 3 image: mysql:5.7 4 ports: 5 - 3306:3306 6 environment: 7 - MYSQL_ROOT_PASSWORD=test # YOUR PASSWORD 8 - MYSQL_ROOT_HOST=% 9 volumes: 10 - ./db/db-datadir:/var/lib/mysql 11 - ./db:/docker-entrypoint-initdb.d 12 - ./db/my.cnf:/etc/mysql/my.cnf 13...

試したこと

こちらの記事➡Django Channels でチャットアプリ作成(Python)
を参考にして、Django Channelsで簡単なチャットアプリのようなものを作ろうとしています。この記事のリンク先にあったgithubのコード(masanori0209/channels_demo)に従って、docker上でプログラムを動かそうとdocker-compose up-dや、docker-compose upなどのコマンドを実行しましたが、エラーが出てしまいます。

対処としては、setting.pyのhostの内容を書き換えたりしましたが、全然解決されませんでした。

私自身mysql等のことはほとんどわからない上に、Dockerも初心者なので、どこか根本的なところでつまずいていると思っているのですが、何かわかる方がいらっしゃれば教えていただきたいです。

補足情報(実行環境)

######Docker-toolbox(win10 home edition)
######requirement.txtの内容↓
channels_redis==2.2.1
asgiref==2.3.0
channels==2.1.2
daphne==2.2.1
Django>=2.1.10,<2.2
PyMySQL==0.9.2
pytz==2018.5
redis==2.10.6
uwsgi==2.0.17.1
mysql-connector-python
mysqlclient

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

djanbo

2020/05/27 12:57

ご指摘ありがとうございます。只今修正いたしました。
Yasumichi

2020/06/02 12:58

'USER': 'test', となってますが、root ではないのですか? > MYSQL_ROOT_PASSWORD
djanbo

2020/06/04 10:28

返信ありがとうございます。 見当外れのことを言っていたら申し訳ないのですが、 'USER': 'root' とするべきだということでしょうか? 変更はしましたが、状況は変わりませんでした。 また、追記になってしまい申し訳ないのですが、mysqlがexitしてしまっていることが大きな原因になっていると思ったので、エラーログのところにそこについて追記させていただきました。 何かおかしいところなどあれば教えていただけるとありがたいです。
guest

回答1

0

ベストアンサー

mysqlのログにある通り,初期化エラーによりMySQLの起動に失敗しています.

mysql_1 | 2020-06-04T10:23:23.001398Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.

エラーメッセージの通り,初期化時にはデータディレクトリは空である必要があるが空でないので初期化に失敗しています.
MySQLのディレクトリとしてローカルディレクトリをマウントしていますが,
この内容(./db/db-datadir)を空にして実行すると起動すると思います.

投稿2020/06/07 14:51

thaim

総合スコア175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

djanbo

2020/06/08 03:33

ありがとうございます。本当に初歩的なところでつまずいていました。 ./db/db-datadirを空にして、コンテナをもう一度起動したら成功しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問