Как подключиться к postgres из файла docker?

#docker #docker-compose #psql

#docker #docker-compose #psql

Вопрос:

Я новичок в docker и postgres. Следует отметить, что моя проблема возникает только с docker-compose.Вот мой файл .yml:

 version: '3.5'
services:
  postgres:
    container_name: postgres_container
    image: postgres
    environment:
      POSTGRES_USER: ${POSTGRES_USER:-postgres}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
      PGDATA: /data/postgres
    volumes:
       - postgres:/data/postgres
    ports:
      - "5432:5432"
    networks:
      - postgres
    restart: unless-stopped
  
  pgadmin:
    container_name: pgadmin_container
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org}
      PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
    volumes:
       - pgadmin:/root/.pgadmin
    ports:
      - "${PGADMIN_PORT:-5050}:80"
    networks:
      - postgres
    restart: unless-stopped
networks:
  postgres:
    driver: bridge
volumes:
    postgres:
    pgadmin:**
 

Когда я запускаю docker-compose run postgres bash , а затем запускаю psql -U postgres , я получаю следующую ошибку

 psql: error: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
 

Кто-нибудь может помочь?

Комментарии:

1. Попробуйте TCP-соединение: psql -U postgres -h localhost

Ответ №1:

При docker-compose run postgres bash этом вы заменяете сценарий точки входа изображения на bash. Итак, БД не запущена. Попробуйте

 $ docker-compose up --detach postgres
$ docker-compose exec postgres bash
 

вместо этого.

Комментарии:

1. Не могли бы вы, пожалуйста, пометить ответ как правильный?

Ответ №2:

Вы можете использовать: psql -U postgres -h postgres

укажите хост с созданной вами сетью.