Как подключиться к postgres, созданному с docker -композицией с внешнего хоста - PullRequest
0 голосов
/ 21 февраля 2020

Я думаю, что эту проблему очень легко решить, но я вырываю волосы. У меня есть следующий docker -compose:

version: "3"
services:

  pg-db:
    image: postgres:11
    environment:
      POSTGRES_PASSWORD: "postgres"
      POSTGRES_USER: "postgres"
      POSTGRES_DB: "postgres"
    ports:
      - 5432:5432
    #network_mode: host

Затем я запускаю docker-compose up, и он запускает контейнер

pg-db_1_78e7ec4a95e6 | 2020-02-21 13:53:53.928 UTC [1] LOG:  database system is ready to accept connections

Я могу подключиться к нему с помощью docker exe c

docker exec -it docker_pg-db-compose_1_78e7ec4a95e6 psql -h pg-db -U postgres postgres

Но мне не удается подключиться к нему «голым» psql:

psql postgresql://postgres:postgres@localhost:5432/postgres

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?

psql postgresql://postgres:postgres@pg-dg:5432/postgres
psql: could not translate host name "pg-db" to address: Name or service not known

Я пробовал с network_mode, но это не так т помощь.

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

После запуска docker -compose вам нужно получить ip контейнера docker, выполнив следующее:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

Тогда вы можете сделать postgresql://postgres:postgres@<container idp>:5432/postgres, вы должны быть возможность подключения к нему

0 голосов
/ 21 февраля 2020

Я использую измененную версию файла docker-compose, предоставленного на странице Postgres DockerHub .

version: '3.1'
services:
  db:
    image: postgres:11
    restart: always
    ports:
      - 5432:5432
    environment:
      POSTGRES_PASSWORD: postgres

Когда я запускаю docker-compose up, я получаю очень похожее «готовое» сообщение:

db_1  | 2020-02-21 14:34:17.826 UTC [1] LOG:  database system is ready to accept connections

На этом этапе я могу подключиться к Postgres с помощью psql.

$ psql -h localhost -U postgres
Password for user postgres: 
psql (12.2, server 11.7 (Debian 11.7-1.pgdg90+1))
Type "help" for help.

postgres=#

Я также могу подключиться с помощью подключения предоставленная вами строка и postico:

postico 1 postico 2

Различия незначительные, я не уверен, что restart Политика имеет значение здесь, но попробуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...