定期的に忘れるので書いておくことにする。
Error response from daemon: Ports are not available: listen tcp 0.0.0.0:5000: bind: address already in use
port 5000 は Airplay レシーバーが使っている
こういうことらしい。
Monterey 以降は占有しているとのことだった。
Airplay を止める方法もあるっぽいけど大変そう。
ということで。 だいたいの場合、困るのは Compose ファイルでアプリケーションサーバーなどの port 指定されているパターンだと思うので compose.override.yml でポート番号を上書きしてしまえばいい。
例えば app コンテナの Rails 起動などであれば以下の様にする。
services: app: command: > sh -c ' ruby -v && rm -f tmp/pids/server.pid && bundle install && bundle exec rails s -p 5001 -b 0.0.0.0 ' ports: - 5001:5001