PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie verbinde ich den Docker-Web-App-Container mit dem Docker PostgreSQL-Container?

Bei Verwendung von docker-compose v2 ist es nicht erforderlich, Links zwischen Diensten zu erstellen. Docker 1.9 und 1.10 ermöglichen es Ihnen, sich über ihren Namen mit anderen Containern im selben (benutzerdefinierten) Netzwerk zu verbinden.

Sie sollten sich mit dem Namen des Dienstes verbinden können oder der Name des Containers als Hostname. Da der Name des Containers von Docker-Compose generiert wird, ist dies nicht sehr praktisch, weshalb Docker-Compose auch einen Alias hinzufügt mit dem Dienstnamen für jeden Container.

Nehmen Sie dieses sehr einfache Beispiel. Ich habe der Einfachheit halber einen Nginx-Container verwendet, aber das gleiche sollte für Ihre Situation gelten;

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

Starten Sie zuerst das Projekt (vorausgesetzt;

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

Pingen Sie dann den „db“-Dienst innerhalb von test_web_app_1 Behälter:

$ 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

Wenn Sie die test_db_1 container können Sie sehen, dass docker-compose automatisch einen „db“-Alias ​​für test_db_1 hinzugefügt hat Behälter;

$ docker inspect test_db_1

Gibt:(nur die NetworkSettings.Networks Teil)

"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"
    }
}