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

Làm cách nào để kết nối vùng chứa ứng dụng web Docker với vùng chứa Docker PostgreSQL?

Khi sử dụng docker-compo v2, bạn không cần tạo liên kết giữa các dịch vụ. Docker 1.9 và 1.10 cho phép bạn kết nối với các vùng chứa khác trên cùng một mạng (tùy chỉnh) thông qua tên của chúng.

Bạn có thể kết nối bằng tên của dịch vụ hoặc tên của vùng chứa như một tên máy chủ. Do tên của vùng chứa được tạo bởi docker-comp, điều này không thực sự thuận tiện để sử dụng, vì vậy, vì lý do đó, docker -omp cũng thêm một bí danh với tên dịch vụ cho mỗi vùng chứa.

Lấy ví dụ rất đơn giản này. Tôi đã sử dụng vùng chứa Nginx để thuận tiện, nhưng điều tương tự cũng sẽ áp dụng cho trường hợp của bạn;

version: '2'
services:
  web_app:
    image: nginx
  db:
    image: nginx

Đầu tiên hãy bắt đầu dự án (giả sử;

$ docker-compose --project-name=test up -d
Creating network "test_default" with the default driver
Creating test_db_1
Creating test_web_app_1

Sau đó ping dịch vụ "db" từ bên trong test_web_app_1 vùng chứa:

$ docker exec -it test_web_app_1 ping -c 2 db
PING db (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.108 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.243 ms
--- db ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.108/0.175/0.243/0.068 ms

Nếu bạn kiểm tra test_db_1 vùng chứa, bạn có thể thấy rằng docker-soạn đã tự động thêm bí danh "db" cho test_db_1 thùng chứa;

$ docker inspect test_db_1

Cung cấp:(chỉ NetworkSettings.Networks phần)

"Networks": {
    "test_default": {
        "IPAMConfig": null,
        "Links": null,
        "Aliases": [
            "db",
            "002b1875e61f"
        ],
        "NetworkID": "0f9e2cddeca79e5a46c08294ed61dee273828607f99014f6410bda887626be70",
        "EndpointID": "a941ab95586a8fdafc5075f9c5c44d745f974e5790ef6048b9e90115a22fb31f",
        "Gateway": "172.18.0.1",
        "IPAddress": "172.18.0.2",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "MacAddress": "02:42:ac:12:00:02"
    }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chèn dữ liệu nhị phân vào DB bằng Laravel?

  2. Postgres là cơ sở dữ liệu tuyệt vời nhất - Lý do số 1:Các nhà phát triển thích nó!

  3. Đặt NOT NULL trên một cột trong postgresql có làm tăng hiệu suất không?

  4. Doctrine2 không đặt trình tự thành mặc định cho cột id (postgres)

  5. Truy vấn Postgres chạy chậm