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:[email protected]:5432/mydatabase
đến
DATABASE_URL: postgres://username:[email protected]: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ủ.