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

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

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

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Docker

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

Q&A

解決済

2回答

3070閲覧

django開発環境構築時のエラー(bind: address already in use)の対処

nre

総合スコア35

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Docker

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

0グッド

0クリップ

投稿2020/09/15 09:17

前提・実現したいこと

下記のサイトの手順通りに
Django+Nginx+MySQLの開発環境を構築したいです。
https://qiita.com/kenkono/items/6221ad12670d1ae8b1dd

そこでDjangoプロジェクトの実行時の
docker-compose run python django-admin.py startproject app .
コマンドを入力すると下記のエラーが発生してしまいます。

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

Status: Downloaded newer image for mysql:5.7 Creating django_db_1 ... error ERROR: for django_db_1 Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use ERROR: for db Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use ERROR: Encountered errors while bringing up the project.

該当のソースコード

ソースコードは下記サイトのものとなります。
https://qiita.com/kenkono/items/6221ad12670d1ae8b1dd

試したこと

dockerで以前にもイメージ、コンテナを作成したのが原因かと思い、

docker-compose down --rmi all --volumes

こちらでまっさらにしてみましたが同じエラーを吐きます。
また、不要と思われるプロジェクトも削除してみましが、同じくエラーでした。

補足情報(FW/ツールのバージョンなど)

Pycharm,macOS,Python3.7,django,docker for mac

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

自己解決

無事に解決する事ができました。
解決したコードは下記です。

#このコマンドでdocker外でmysqlが起動している事を知りました。 sudo lsof -i -P | grep "LISTEN" #これで起動しているmysqlを削除 sudo kill <killしたいportのPID>

問題はdockerではなくべつのプロジェクトでmysqlを起動していた事でした。
ただ、停止、削除コマンドを入力してもnotなんちゃらと表示され、
うまく停止削除ができませんでしたし、なんのプロジェクトでstartしているのかも分かりませんでした。
ですがkillコマンドの前にsudoを追加する事で無事にポート3306で接続しているmysqlが削除でき、
無事にdockerでビルドできました。

投稿2020/09/16 04:47

nre

総合スコア35

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

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

0

ERROR: for django_db_1 Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use ERROR: for db Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use

これらのエラーメッセージはDockerに限らず、Linuxなどで一般的によく出てくるメッセージです。英語で表示されている意味は「ポート 3306 は何かのプログラムが既に使用しているため、起動できない」です。

通常、このような場合は lsof -i tcp:3306 のようにコマンドを実行し、どのプロセスが対象ポート(この場合は 3306)を使用しているか調べますが、おそらく今回はお考えの通り、何かしら Docker によって起動した MySQL が残ったままになっているのではと思います。

docker ps を実行して、ホスト側のポート 3306 を使用している MySQL のコンテナが残っていないかどうか確認されてみてはいかがでしょうか(docker-compose ps は、現在操作している Docker Compose プロジェクトの情報しか見えません)。

そして、表示された MySQL 用のコンテナが不要であれば docker kill などで停止すると、ポートが解放されますので、別の MySQL を起動できるようになります。

投稿2020/09/15 20:44

zembutsu

総合スコア1584

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

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

nre

2020/09/16 02:33

大変お忙しい中、 丁寧にご回答していただき誠にありがとうございます。 おっしゃる通りに複数のコマンドを実行してイメージとコンテナの削除を行いましたが、やはり同じエラーを吐きます。 下記が試したコマンドです。 docker ps -a docker rm $(docker ps -aq) docker rmi -f イメージID docker stop $(docker ps -q) | docker rm $(docker ps -aq) | docker rmi $(docker images -q) docker-compose down 原因はdockerではないのでしょうか。
zembutsu

2020/09/18 04:45

そうですね、既に解決されている様子ですが、docker ps コマンドで何もでていないのであれば、通常は Docker ではありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問