Доступ к данным postgres в сети docker-compose - PullRequest
0 голосов
/ 26 января 2019

У меня проблемы с доступом к базе данных, созданной из файла docker-compose.

Учитывая следующий файл compose, я смогу подключиться к нему из java, используя что-то вроде:

jdbc:postgresql://eprase:eprase@database:7000/eprase

Однако соединение отклонено.Я даже не могу использовать PGAdmin, чтобы соединить его, используя те же данные для создания нового сервера.

Я ввел контейнер базы данных и выполнил команды psql, чтобы убедиться, что пользователь и база данных eprase были созданы в соответствии сДокументация Postgres Docker, все выглядит нормально.Я не могу сказать, находится ли проблема в контейнере базы данных или что-то, что мне нужно изменить в составной сети.

Клиентские и серверные службы можно в значительной степени игнорировать, сервер - это веб-API на основе Java, иклиент является угловым приложением.

Создать файл:

version: "3"
services:
  client:
    image: eprase/client:latest
    build: ./client/eprase-app
    networks:
      api:
    ports:
      - "5000:80"
    tty: true
    depends_on:
      - server
  server:
    image: eprase/server:latest
    build: ./server
    networks:
      api:
    ports:
      - "6000:8080"
    depends_on:
      - database
  database:
    image: postgres:9
    volumes:
      - "./database/data:/var/lib/postgresql/data"
    environment:
      - "POSTGRES_USER=eprase"
      - "POSTGRES_PASSWORD=eprase"
      - "POSTGRES_DB=eprase"
    networks:
      api:
    ports:
      - "7000:5432"
    restart: unless-stopped
  pgadmin:
    image: dpage/pgadmin4:latest
    environment: 
      - "PGADMIN_DEFAULT_EMAIL=admin@eprase.com"
      - "PGADMIN_DEFAULT_PASSWORD=eprase"
    networks:
      api:
    ports:
      - "8000:80"
    depends_on:
      - database
networks:
  api:

1 Ответ

0 голосов
/ 26 января 2019

База данных PostgreSQL прослушивает порт контейнера 5432.Строка 7000:5432 отображает порт хоста 7000 на порт контейнера 5432.Это позволяет вам подключаться к базе данных через порт 7000. Но ваши службы в общей сети (api) должны взаимодействовать друг с другом через порты контейнеров.

Итак, с точки зрения контейнеров длядля клиентских и серверных служб строка подключения должна быть:

jdbc:postgresql://eprase:eprase@database:5432/eprase
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...