LaraDockでポート番号重なっててエラー


LaraDockを利用してLaravel開発環境を整えたかったので、勉強のためLaraDockをgit cloneしたり消したり。

ERROR: for phpmyadmin  Cannot start service phpmyadmin: driver failed programming external connectivity on endpoint laradock_phpmyadmin_1 (d4818c2cc0081852102cd2ab3404e96ed4db6253aeb0ed1f249c9d18fa854cd7): Bind for 0.0.0.0:8080 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.

とエラーがでてきて立ち上がらないコンテナがでてきてたので、メモとして残しておきたいと思います。

環境

Mac OS X Catalina 10.15.4
Docker version 19.03.8
docker-compose version 1.25.4

エラーが起きた状態

LaraDockをgit cloneしたり消したりを繰り返して勉強していました。
いろんなQiita投稿記事を参考にしていたあと、公式ページ様にある手順で起動させようとしたところ、上記エラーが。

Creating laradock_docker-in-docker_1 ... done
Creating laradock_mysql_1            ... done
Creating laradock_redis_1            ... done
Creating laradock_workspace_1        ... 
Creating laradock_phpmyadmin_1       ... 
Creating laradock_phpmyadmin_1       ... error

Creating laradock_workspace_1        ... done
18fa854cd7): Bind for 0.0.0.0:8080 failed: port is already allocated
Creating laradock_php-fpm_1          ... done
Creating laradock_nginx_1            ... done

ん?
そのあと最初のエラーが表示されました。

エラーの中身

エラー文がほぼ答えなのですが、phpmyadminが使うportが既に使われているからでした。

じゃ何と衝突してるのか。

$ docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                                                                                    NAMES
94a10dcc3de2        laradock_nginx       "/bin/bash /opt/star…"   2 minutes ago       Up 2 minutes        0.0.0.0:80-81->80-81/tcp, 0.0.0.0:443->443/tcp                                                           laradock_nginx_1
abf30e97d0df        laradock_php-fpm     "docker-php-entrypoi…"   2 minutes ago       Up 2 minutes        9000/tcp                                                                                                 laradock_php-fpm_1
8a8fd63f2169        laradock_workspace   "/sbin/my_init"          2 minutes ago       Up 2 minutes        0.0.0.0:3000-3001->3000-3001/tcp, 0.0.0.0:8080->8080/tcp, 0.0.0.0:2222->22/tcp, 0.0.0.0:8001->8000/tcp   laradock_workspace_1
c71e9e79dd9a        docker:19.03-dind    "dockerd-entrypoint.…"   2 minutes ago       Up 2 minutes        2375-2376/tcp                                                                                            laradock_docker-in-docker_1
cfec401604c1        laradock_redis       "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:6379->6379/tcp                                                                                   laradock_redis_1
07264164c48a        laradock_mysql       "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp                                                                        laradock_mysql_1

分かりにくかったんですが、laradock_workspaceと衝突してました。
最初のエラー文に書いてあるポート番号と同じのが見えますね。

それぞれが利用するポートはLaraDockディレクトリ内のdocker-compose.ymlにあり、そこを変更しました。


これを直接指定しました。

8080が被ってるなら8081で良いかなと思ったんですが、どこかで8081って見た気がしたので8082に指定しました。他のと被ってたらまたエラー出るかな...
こんないい加減じゃダメですね。

起動して確認

コンテナ削除してやり直し。
そうすると、

 Name                          Command               State                                                          Ports                                                        
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp, 2376/tcp                                                                                                  
laradock_mysql_1              docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp                                                                                   
laradock_nginx_1              /bin/bash /opt/startup.sh        Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp                                                        
laradock_php-fpm_1            docker-php-entrypoint php-fpm    Up      9000/tcp                                                                                                            
laradock_phpmyadmin_1         /docker-entrypoint.sh apac ...   Up      0.0.0.0:8082->80/tcp                                                                                                
laradock_redis_1              docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp                                                                                              
laradock_workspace_1          /sbin/my_init                    Up      0.0.0.0:2222->22/tcp, 0.0.0.0:3000->3000/tcp, 0.0.0.0:3001->3001/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8080->8080/tcp

なんとか起動できました。

こちらの記事を思いっきり参考にさせてもらいました。
ありがとうございました。