Vấn đề rất đơn giản là máy tính của tôi đã chạy một phiên bản của Postgres mà tôi không biết là vẫn đang chạy (không phải bên trong Docker) trên :5432
, được kiểm tra bằng:
$ lsof -n -i:5432 | grep LISTEN
Vì vậy, tôi nhớ rằng tôi đã cài đặt nó qua https://gist.github.com/sgnl/609557ebacd3378f3b72 , Tôi đã chạy
$ pg-stop
Và sau đó tôi không gặp vấn đề gì khi kết nối với phiên bản Docker.
Chỉnh sửa (2019/07/02)
Câu hỏi này gần đây đã vượt qua 10.000 lượt xem, vì vậy tôi nghĩ mình nên giải thích thêm về lý do tại sao điều này lại xảy ra.
Thông thường chạy qua docker, sử dụng python và kết nối với cơ sở dữ liệu postgres yêu cầu bạn cài đặt psycopg2
, thông qua pip3 install psycopg2
, nhưng nếu bạn chạy lệnh này, bạn sẽ nhận được:
Error: pg_config executable not found.
Điều này là do psycopg2 yêu cầu cài đặt hệ điều hành của các thư viện postgres:
yum install postgresql-devel
apt-get install postgresql-client
Bây giờ, trên máy Mac, bạn sẽ cần thực hiện tương tự với brew:
brew install postgresql
Một điều mà tôi không nhận ra, đó là trên Mac, việc thực hiện ở trên sẽ không chỉ cài đặt các thư viện bắt buộc mà còn khởi động cơ sở dữ liệu trên :5432
. Bởi vì tất cả điều này được thực hiện trong nền, tôi không xảy ra sự cố vì không có lỗi thông thường nào xuất hiện để thông báo rằng cổng đang được sử dụng, v.v.