1
3

More than 5 years have passed since last update.

MacOS起動時のPostgres自動起動を停止する

Posted at

開発環境の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
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3