たかおLab

LaradockでWARNING: Host is already in use by another container

PHP プログラミング
Laradockのロゴ画像

久しぶりに新しくLaradockプロジェクトを立ち上げようと思い、gitで最新のLaradockをクローンして実行したらこんなエラーが。

 

 

なんか、laradock_workspace_1 コンテナのポートがすでに使われてるみたいなことを言われてる…?

8080番ポートにバインドされているけど、phpmyadminが使ってるよ的な?

 

 

結論から言うと、workspaceコンテナで使うポートとphpmyadminで使うポートが被っているのが原因でした。

 

なので、.envファイルで指定されているworkspaceコンテナのポート番号を別の番号に変更したら解決できました。

 

 

以下、解決までの流れを自分用にメモしておきます。

 

 

 

Dockerを再起動するも変化なし

 

ちょっと調べてみたところ、以下の記事を発見。

docker-compose up したらdriver failed programming external connectivity on endpointが出てきた

 

記事の通りに早速Dockerを再起動してみましたが、特に変化なし。

 

 

ポート番号を変更

 

今まではコンテナを立ち上げるときは、以下のサービスを立ち上げていました。

 

 

なので今回も同じようにコンテナを立ち上げてみましたが、うまく立ち上がりません。

 

今回はこれを解決して、nginx、mysql、phpmyadminを同時に立ち上げることがゴールです。

 

 

以下のエラー文を見る限り、原因はどうやらポートが被ってるのがいけないっぽい。

 

 

なので、ポート番号がどのように割り当てられているか確認。

 

 

nginxとか立ち上がってないじゃん…。

それはさておき、やはりworkspaceコンテナに問題がありそう。

 

手順を間違えたのかな?と思い、Laradockのドキュメントを読み返しているとこんな一文が。

 

(Please note that sometimes we forget to update the docs, so check the docker-compose.yml file to see an updated list of all available containers).

 

なのでとりあえず、docker-compose.yml ファイルを見てみることに。

 

 

なるほど、WORKSPACE_SSH_PORT が、コンテナの22番ポートに割り当てられるということか、多分。

 

WORKSPACE_SSH_PORTの値が何か知るために、次は .env を見てみることに。

 

 

WORKSPACE_SSH_PORT=2222 ってことが判明。

 

でもよく見てみると、それよりも気になる一行が…

 

 

なんで、ここに8080番ポートが割り当てられてるんだ?

さっき docker-compose ps で確認した時は、8080番はphpmyadminが使ってたはず。

 

ってことで、この行の8080番を別のポート番号(安直に8081番)にしてみることに。

 

その後、docker-compose down -v でコンテナを削除してから、再び docker-compose up で立ち上げてみたら、

 

 

うまくいきました!

 

ポート番号も確認してみると、

 

 

ちゃんと、8080番はphpmyadminコンテナ、8081番はworkspaceコンテナに割り当てられてるのが確認できます。

 

 

補足 前ver.のLaradockとの比較

 

一応、今まで使ってたLaradockプロジェクトの方でもポートを確認してみました。

 

 

そして、今回がこれ↓(再掲載)

 

 

これをみる限り、今までのLaradockのworkspaceコンテナのポートは2222番だけですが、なぜか今回は8000番と8080番が追加されています。

 

今回のwoekspaceコンテナに関して .envの設定を見てみると、今までとは違うポートも割り当てられていました。

 

 

アップデートした際に追加されたのかな?