Docker Spring Boot Postgres Убедитесь, что имя хоста и порт указаны правильно и что почтмейстер принимает соединения TCP / IP - PullRequest
0 голосов
/ 25 апреля 2020

Я впервые пытаюсь поместить мое приложение Springboot в один docker контейнер, а мой PostgresDB - в другой контейнер.

application.properties:

spring.datasource.url=jdbc:postgresql://localhost:5432/esteticcenter
spring.datasource.username=postgres
spring.datasource.password=admin

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto = update

dockerfile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
EXPOSE 8082
RUN mkdir -p /app/
RUN mkdir -p /app/logs/
ADD target/postgres-demo-0.0.1-SNAPSHOT.jar /app/app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/app.jar"]

docker -compose.yml:

version: "3"
services:
  postgres:
    image: postgres:latest
    network_mode: bridge
    container_name: postgres
    volumes:
      - postgres-data:/var/lib/postgresql/data
    expose:
      - 5432
    ports:
      - 5432:5432
    environment:
      - POSTGRES_PASSWORD=admin
      - POSTGRES_USER=postgres
      - POSTGRES_DB=esteticcenter
    restart: unless-stopped
  # APP*****************************************
  springbootapp:
    image: springbootapp:latest
    network_mode: bridge
    container_name: springbootapp
    expose:
      - 8080
    ports:
      - 8080:8080
    restart: unless-stopped
    depends_on:
      - postgres
    links:
      - postgres
volumes:
  postgres-data:

Ошибка: org. postgresql .util.PSQLException: Соединение с локальным хостом: 5432 отказано. Убедитесь, что имя хоста и порт указаны правильно и что администратор почты принимает соединения TCP / IP.

Я попытался заменить «localhost» на db postgresql или db, но в spring.datasource.url Как и многие ответы я проверил, но затем «mvn clean package» не удается, и я не могу создать банку. Что мне здесь не хватает?

1 Ответ

1 голос
/ 25 апреля 2020

Docker compose создаст выделенную сеть с DNS для ваших услуг. Каждый сервис получит имя сервиса в качестве имени хоста (как определено в docker -compose.yml). Другие контейнеры могут быть доступны из этой сети по имени службы.

Изменение имени хоста для базы данных в файле application.properties должно решить проблему:

spring.datasource.url=jdbc:postgresql://postgres:5432/esteticcenter
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...