前提・実現したいこと
port is already allocatedエラーを解決し、docker-compose upでアプリとDBのコンテナを起動したいです。
質問の内容
自作アプリ開発中にdockerでの環境を実装しようと思いました。
dockerの公式リファレンスやQiita記事を参考に以下のようにDockerfile、docker-compose.ymlを記述しました。
つい先週まではこの記述でdocker-compose upでコンテナが起動し、ブラウザでアプリが見れていました。
他の方のポートフォリオを見てみたいと思い、githubからcloneし、dockerが入っていたので、docker-compose upでアプリを起動しようとしたところ、以下エラーが発生し、その後自分のアプリでもエラーがでるようになってしまいました。
発生している問題・エラーメッセージ
ERROR: for habit_app_db_1 Cannot start service db: driver failed programming external connectivity on endpoint habit_app_db_1 (35a1dc1b4365dc367cd93b7ff2eda882ed46d22fcdc8860a542579b4b41261dc): Bind for 0.0.0.0:4306 failed: port is already allocated ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint habit_app_db_1 (35a1dc1b4365dc367cd93b7ff2eda882ed46d22fcdc8860a542579b4b41261dc): Bind for 0.0.0.0:4306 failed: port is already allocated
該当のソースコード
docker
1version: '3' 2services: 3 db: 4 image: mysql:5.7 5 environment: 6 MYSQL_ROOT_PASSWORD: password 7 MYSQL_DATABASE: root 8 MYSQL_USER: root 9 MYSQL_PASSWORD: password 10 ports: 11 - "4306:3306" 12 13 web: 14 build: . # 相対パスでDockerfileを探しにいき、Dockerfileを元にコンテナイメージを作成 15 command: rails s -p 3000 -b '0.0.0.0' 16 volumes: 17 - .:/app_name 18 ports: 19 - "3000:3000" 20 links: 21 - db
docker
1FROM ruby:2.6.5 2 3# 必要なパッケージのインストール(基本的に必要) 4RUN apt-get update -qq && \ 5 apt-get install -y build-essential \ 6 libpq-dev \ 7 nodejs 8 9# 作業ディレクトリの作成、設定 10RUN mkdir /app_name 11##作業ディレクトリ名をAPP_ROOTに割り当てて、以下$APP_ROOTで参照 12ENV APP_ROOT /app_name 13WORKDIR $APP_ROOT 14 15# ホスト側(ローカル)のGemfileを追加する 16COPY ./Gemfile $APP_ROOT/Gemfile 17COPY ./Gemfile.lock $APP_ROOT/Gemfile.lock 18 19# Gemfileのbundle install 20RUN gem install bundler:2.0.2 && bundle install 21ADD . $APP_ROOT
試したこと
Bind for 0.0.0.0:4306 failed: port is already allocated
この部分のエラーがportがすでに存在しており接続できないといった意味であると思い、ポート番号に割り当てられているプロセスを確認しました。
割り当てられているプロセスがなく、問題がわからなかったためいったんすべてのコンテナを削除し、再度docker-compose up
を行いましたが、同様のエラーが発生しました。
手順は
sudo lsof -i:4306でプロセスの確認をしましたが、何も表示されませんでした。
その後docker rm $(docker ps -q -a)
でコンテナをすべて削除
docker ps -a
でコンテナがすべて無いことを確認
docker container prune
を行い、docker-composeを行いましたが、同様のエラーが発生しました。
補足情報(FW/ツールのバージョンなど)
バージョン
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
Rails 6.0.3.4
mysql Ver 14.14 Distrib 5.6.50, for osx10.15 (x86_64) using EditLine wrapper
Docker version 20.10.0, build 7287ab3
dockerを学習したつもりでしたが、コンテナ同士がどういったふうにportと接続していて、なぜ今回接続できないのか全くわかりませんでした。
その他必要情報ありましたらコメント下さい。
ご回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー