PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak połączyć kontener aplikacji webowej Docker z kontenerem Docker PostgreSQL?

W przypadku korzystania z docker-compose v2 nie jest konieczne tworzenie łączy między usługami. Docker 1.9 i 1.10 umożliwiają łączenie się z innymi kontenerami w tej samej (niestandardowej) sieci za pomocą ich nazwy.

Połączenie powinno być możliwe przy użyciu nazwy usługi lub nazwa kontenera jako nazwę hosta. Biorąc pod uwagę, że nazwa kontenera jest generowana przez docker-compose, nie jest to zbyt wygodne w użyciu, więc z tego powodu docker-compose dodaje również alias z nazwą usługi do każdego kontenera.

Weźmy ten bardzo prosty przykład. Użyłem kontenera Nginx dla wygody, ale to samo powinno dotyczyć Twojej sytuacji;

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

Najpierw uruchom projekt (zakładając;

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

Następnie pinguj usługę „db” z poziomu test_web_app_1 kontener:

$ 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

Jeśli sprawdzisz test_db_1 kontenera, widać, że docker-compose automatycznie dodał alias „db” dla test_db_1 kontener;

$ docker inspect test_db_1

Daje:(tylko NetworkSettings.Networks część)

"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. Railsy - SQLite3::SQLException:w pobliżu USING:błąd składni

  2. Jak w pg_restore użyć ciągu połączenia Postgres do określenia hosta/bazy danych/nazwy użytkownika/hasła?

  3. Odpowiedź Json na konwersję daty i godziny postgresql Java postgresql

  4. Problem z nazwą kolumny zawiera dwukropek w PostgreSQL

  5. Czy serwer działa na hoście lokalnym hosta (::1) i akceptuje połączenia TCP/IP na porcie 5432?