docker springboot подключается только на postgres 5432 через docker-compose - PullRequest
0 голосов
/ 17 апреля 2019

Использование docker для подключения springboot к postgres через docker-compose. Использование порта 5432 на postgres работает нормально, если я пробую порт, отличный от этого, он не сможет

рабочий код

весна

spring.datasource.url=jdbc:postgresql://db:5432/wwc
spring.datasource.username=wwc
spring.datasource.password=test
spring.datasource.driver-class-name=org.postgresql.Driver

докер-Compose

version: '2.1'
services:
  db:
    container_name: db
    image: postgres:9.4
    ports:
      - 5432:5432
    volumes:
      - /tmp:/var/lib/postgresql
    environment:
      - POSTGRES_USER=wwc
      - POSTGRES_DB=wwc
      - POSTGRES_PASSWORD=test
  server:
    container_name: spring-boot-rest-server
    build:
      context: .
      dockerfile: Dockerfile.server
    ports:
      - 8080:8080
    logging:
      driver: json-file
    depends_on:
      - db

  web:
    container_name: nginx-web
    links:
      - "server:springboot"
    build:
      context: .
      dockerfile: Dockerfile.web
    ports:
      - 80:80
      - 8088:8088
    logging:
      driver: json-file
    depends_on:
      - server

** в соединении отказано, код **

весна

spring.datasource.url=jdbc:postgresql://db:6000/wwc
spring.datasource.username=wwc
spring.datasource.password=test
spring.datasource.driver-class-name=org.postgresql.Driver

докер-Compose

version: '2.1'
services:
  db:
    container_name: db
    image: postgres:9.4
    ports:
      - 6000:5432
    volumes:
      - /tmp:/var/lib/postgresql
    environment:
      - POSTGRES_USER=wwc
      - POSTGRES_DB=wwc
      - POSTGRES_PASSWORD=test
  server:
    container_name: spring-boot-rest-server
    build:
      context: .
      dockerfile: Dockerfile.server
    ports:
      - 8080:8080
    logging:
      driver: json-file
    depends_on:
      - db

  web:
    container_name: nginx-web
    links:
      - "server:springboot"
    build:
      context: .
      dockerfile: Dockerfile.web
    ports:
      - 80:80
      - 8088:8088
    logging:
      driver: json-file
    depends_on:
      - server

ошибка:

spring-boot-rest-server | org.postgresql.util.PSQLException: отказано в соединении с db: 6000. Убедитесь, что имя хоста и порт указаны правильно и что администратор почты принимает соединения TCP / IP.

Что я делаю не так?

1 Ответ

2 голосов
/ 17 апреля 2019

Вы немного путаете порты: ваш контейнер "db" экспортирует только 1 порт: 5432. 6000, которые вы помещаете в ваш docker-compose, является портом на локальном хосте, который вы сопоставляете с этим контейнером (дБ) на этом порту.(5432).

Вы даже не должны использовать сопоставления портов для контейнера postgres, если не хотите подключаться с локального узла, что, как я полагаю, вам не нужно.

Если вы хотите использовать другойчем порт 5432, вам нужно расширить Dockerfile postgres и изменить конфигурацию так, чтобы postgres начал прослушивать другой порт.

Надеюсь, это поможет.

...