開発環境のPostgresコンテナ化に伴い、
ポート重複を起こすためOS起動時の自動起動を停止する
Laradockで環境構築していたとき、以下のようなエラーが発生。
どうもポート番号がすでに使われている様子。
laradock
docker-compose up -d postgres
Starting laradock_postgres_1 ... error
ERROR: for postgres Cannot start service postgres: driver failed programming external connectivity on endpoint laradock_postgres_1 :
Error starting userland proxy: Bind for 0.0.0.0:5432 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.
自分では起動した覚えがないのでポートの状況を以下のコマンドで確認(postgresのデフォルトは5432)
laradock
$ sudo lsof -i:5432
Password:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 72 postgres 4u IPv6 0xe5f7d69b0bace43b 0t0 TCP *:postgresql (LISTEN)
postgres 72 postgres 5u IPv4 0xe5f7d69b0bad50a3 0t0 TCP *:postgresql (LISTEN)
停止しておく。
# 上で確認したPIDを指定しプロセスをkill
$ sudo kill 72
OS起動時の自動起動プロセスを以下のコマンドで検索
#大量に表示されるのでPIDでgrepする
$ sudo launchctl list | grep 72
72 0 com.edb.launchd.postgresql-11 # これが原因
272 0 com.apple.colorsyncd
自動起動ファイルの格納先はいくつかあり今回は以下のパスに格納されていた。
/Library/LaunchDaemons/
以下のコマンドで自動起動されなくなる。
内部的には対象ファイルの中にDisbledの記述を追加している。
$ sudo launchctl unload -w /Library/LaunchDaemons/com.edb.launchd.postgresql-11.plist
再起動してpostgresが立ち上がってなければ完了。
$ sudo lsof -i:5432