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

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

ただいまの
回答率

88.91%

【Laravel】$docker-compose up -d でコンテナが立ち上がらない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 198

helloo

score 10

前提・実現したいこと

既にDocker上でLaravelを使ってアプリを制作し、現在二つ目のアプリを同じくLaravelを使用して制作しようとしています。

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

参考にしたQiitaの記事
こちらの記事を参考に、進めたのですがいざwelcomページを開くと

File not found


のメッセージが表示されたので、一度コンテナを停止し、再度立ち上げることにしました。
$docker-compose up -dを打ち込むと、以下のようなメッセージがターミナル上に表示されました。

docker-laravel-alpine_node_1 is up-to-date
docker-laravel-alpine_app_1 is up-to-date
docker-laravel-alpine_redis_1 is up-to-date
docker-laravel-alpine_mail_1 is up-to-date
docker-laravel-alpine_db-testing_1 is up-to-date
docker-laravel-alpine_web_1 is up-to-date
Creating docker-laravel-alpine_db_1 ... 
Creating docker-laravel-alpine_db_1 ... error

ERROR: for docker-laravel-alpine_db_1  Cannot start service db: driver failed programming external connectivity on endpoint docker-laravel-alpine_db_1 (122d71c877c21a42a19c8e8b172ce80aedb537ceb36cabbfea352ad58260b0bc): Bind for 0.0.0.0:13308 failed: port is already allocated

ERROR: for db  Cannot start service db: driver failed programming external connectivity on endpoint docker-laravel-alpine_db_1 (122d71c877c21a42a19c8e8b172ce80aedb537ceb36cabbfea352ad58260b0bc): Bind for 0.0.0.0:13308 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.

該当のソースコード

docker/nginx/default.conf

server {
    listen 80;
    root /var/www/html/web.php/public;
    index index.php;
    charset utf-8;

    location / {
        root /work/public;
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}


docker-compose.yml

version: "3"
services:
  app:
    build:
      context: ./docker/php
      args:
        - TZ=${TZ:-Asia/Tokyo}
    ports:
      - ${APP_PORT:-18000}:8000
    volumes:
      - ${PROJECT_PATH:-./src}:/work
      - ./docker/ash:/etc/profile.d
      - ./docker/php/psysh:/root/.config/psysh
      - ./logs:/var/log/php
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
    working_dir: /work
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=db
      - DB_DATABASE=${DB_NAME:-homestead}
      - DB_USERNAME=${DB_USER:-homestead}
      - DB_PASSWORD=${DB_PASS:-secret}
      - TZ=${TZ:-Asia/Tokyo}
      - MAIL_HOST=${MAIL_HOST:-mail}
      - MAIL_PORT=${MAIL_PORT:-1025}
      - CACHE_DRIVER=redis
      - SESSION_DRIVER=redis
      - QUEUE_DRIVER=redis
      - REDIS_HOST=redis

  web:
    image: nginx:1.17-alpine
    depends_on:
      - app
    ports:
      - ${WEB_PORT:-10080}:80
    volumes:
      - ${PROJECT_PATH:-./src}:/work
      - ./logs:/var/log/nginx
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    environment:
      - TZ=${TZ:-Asia/Tokyo}

  db:
    image: mysql:8.0
    volumes:
      - db-store:/var/lib/mysql
      - ./logs:/var/log/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      - MYSQL_DATABASE=${DB_NAME:-homestead}
      - MYSQL_USER=${DB_USER:-homestead}
      - MYSQL_PASSWORD=${DB_PASS:-secret}
      - MYSQL_ROOT_PASSWORD=${DB_PASS:-secret}
      - TZ=${TZ:-Asia/Tokyo}
    ports:
      - ${DB_PORT:-13306}:3306

  db-testing:
    image: mysql:8.0
    volumes:
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    tmpfs:
      - /var/lib/mysql
      - /var/log/mysql
    environment:
      - MYSQL_DATABASE=${DB_NAME:-homestead}
      - MYSQL_USER=${DB_USER:-homestead}
      - MYSQL_PASSWORD=${DB_PASS:-secret}
      - MYSQL_ROOT_PASSWORD=${DB_PASS:-secret}
      - TZ=${TZ:-Asia/Tokyo}
    ports:
      - ${DB_TESTING_PORT:-13307}:3306

  node:
    image: node:12.14-alpine
    tty: true
    volumes:
      - ${PROJECT_PATH:-./src}:/work
    working_dir: /work

  redis:
    image: redis:5.0-alpine
    volumes:
      - redis-store:/data

  mail:
    image: mailhog/mailhog
    ports:
      - ${MAILHOG_PORT:-18025}:8025

volumes:
  db-store:
  redis-store:

docker-laravel-alpine/.env

#COMPOSE_PROJECT_NAME=myproject
PROJECT_PATH=./openchat
TZ=Asia/Tokyo
WEB_PORT=10081
APP_PORT=18001
DB_PORT=13307
DB_TESTING_PORT=13308
DB_NAME=homestead
DB_USER=homestead
DB_PASS=secret
MAILHOG_PORT=18026
MAIL_HOST=mail
MAIL_PORT=1026

試したこと

docker-laravel-alpine/.envファイルのポート番号を、既存のアプリのものと被らないようにそれぞれ既存のポート番号に1足したものに変更しました。
拙い質問ではござますが、どうかお力添えいただけると幸いです。何卒よろしくお願いします。

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

macOS Catalina 10.15.5
Docker version 19.03.8, build afacb8b
docker-compose version 1.25.5, build 8a1c60f6

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

提示しているログの以下の行をみるに

ERROR: for db  Cannot start service db: driver failed programming external connectivity on endpoint docker-laravel-alpine_db_1 (122d71c877c21a42a19c8e8b172ce80aedb537ceb36cabbfea352ad58260b0bc): Bind for 0.0.0.0:13308 failed: port is already allocated

ポート13308がすでに使用中のようなので、ポート番号を変更してみてはいかがでしょうか
.env の DB_PORT=33308 とか

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/13 12:45

    ありがとうございました!無事解決することができました!

    キャンセル

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

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る