DATABASE_URL của bạn tham chiếu đến 127.0.0.1 , là bộ điều hợp lặp lại (xem thêm tại đây). Điều này có nghĩa là "kết nối với chính tôi".
Khi chạy cả hai ứng dụng (không sử dụng Docker) trên cùng một máy chủ, cả hai đều có thể định địa chỉ trên cùng một bộ điều hợp (còn được gọi là localhost ).
Khi chạy cả hai ứng dụng trong vùng chứa, chúng không còn trên localhost như trước. Thay vào đó, bạn cần trỏ web vùng chứa vào db địa chỉ IP của vùng chứa trên docker0 bộ điều hợp - mà docker-compose bộ cho bạn.
Thay đổi:
127.0.0.1 tới CONTAINER_NAME (ví dụ:db )
Ví dụ:
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
đến
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
Điều này hoạt động nhờ các liên kết Docker:web vùng chứa có một tệp (/etc/hosts ) với một db mục nhập trỏ đến IP mà db vùng chứa đang bật. Đây là nơi đầu tiên hệ thống (trong trường hợp này là vùng chứa) sẽ xem xét khi cố gắng phân giải tên máy chủ.