PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sử dụng Docker để khởi chạy ứng dụng web, không thể kết nối với Postgresql DB?

Tại sao tôi KHÔNG thể kết nối với localhost:5432?

Tạo mã /etc/hosts cho vùng chứa của bạn

$ sudo docker exec -it [container] cat /etc/hosts

Đối với mạng docker là bridge theo mặc định, localhost bên trong trỏ đến chính vùng chứa ( Mạng cầu nối mặc định của Docker ). Sau đó, bạn không có 5432 đang nghe trong vùng chứa của bạn:

$ sudo docker exec [container] nc -v -z localhost 5432

Giải pháp 1. Nếu bạn muốn mã hóa cứng "localhost:5432" bên trong xml cấu hình của mình, cách dễ nhất là tạo vùng chứa của bạn với tùy chọn "--net =host":

$ sudo docker run --net=host -it ...
Giải pháp
2. Thay đổi localhost của ip máy chủ docker của bạn bên trong vùng chứa
  • Nhận ip máy chủ docker của bạn :
    $ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 
    192.168.5.1
  • Nhập vùng chứa của bạn:
    $ sudo docker exec -it [container] /bin/bash
  • Chỉnh sửa tệp /etc/hosts để trỏ máy chủ cục bộ tới ip máy chủ docker :
    $ sudo vim /etc/hosts
    192.168.5.1 localhost

Giải pháp 3. Sửa đổi tệp cấu hình db của bạn để sử dụng bí danh thay vì localhost :

connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Sau đó, thêm DB_ALIAS vào máy chủ của vùng chứa:
$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngăn chặn SQL Injection trong tên cột động

  2. tại sao PG ::UniqueViolation:LỖI:giá trị khóa trùng lặp vi phạm ràng buộc duy nhất?

  3. sqlalchemy postgresql Là chỉ mục rỗng

  4. Heroku Postgres Error:PGError:ERROR:các tổ chức quan hệ không tồn tại (ActiveRecord ::StatementInvalid)

  5. Không thể kết nối với PostgreSQL thông qua cơ sở dữ liệu nodejs cục bộ, nó đột ngột ngừng hoạt động trên mac