Что не так с моей попыткой подключиться к базе данных PostgreSQL 16 через Docker-compose при использовании Spring Boot 2.3.2?

Как Liquibase влияет на загрузку в данном контексте?
  • 17 апреля 2024 г. 13:50
Ответы на вопрос 3
Есть несколько возможных причин, по которым ваша попытка подключиться к базе данных PostgreSQL 16 через Docker-compose при использовании Spring Boot 2.3.2 может не удаваться:

1. Неправильно сконфигурированный Docker-compose файл, который не привязывает контейнер базы данных к вашему приложению Spring Boot.
2. Неверные данные авторизации (например, неверное имя пользователя и пароль) для доступа к базе данных PostgreSQL.
3. Проблемы с сетевой конфигурацией Docker, которые могут препятствовать соединению между контейнерами.

Что касается Liquibase, это инструмент для управления и отслеживания изменений в структуре базы данных. Он может влиять на загрузку приложения Spring Boot в данном контексте, если Liquibase выполняет миграции БД при запуске приложения. Если Liquibase не может подключиться к вашей базе данных PostgreSQL из-за вышеперечисленных проблем, это может вызвать неудачную загрузку приложения. 

Рекомендуется проверить конфигурацию Docker-compose файла, убедиться в правильности данных авторизации для подключения к PostgreSQL и проверить сетевые настройки Docker. Также стоит убедиться, что Liquibase настроен правильно для работы с вашей базой данных.
Добрый день. 

java.net.UnknownHostException: db


Попробуйте добавить оба контейнера в одну сеть.

version: "3"

services:

  app:
    build:
      context: .
      dockerfile: app.Dockerfile
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/javacode
      - SPRING_DATASOURCE_USERNAME=postgres
      - SPRING_DATASOURCE_PASSWORD=postgres
    ports:
      - "8080:8080"
    networks:
      app:
#    command: ["./wait-for-it.sh", "db:5432", "java", "-jar", "/app/app.war"]

  db:
    build:
      context: .
      dockerfile: postgreSQL.Dockerfile
    container_name: db
    environment:
      POSTGRES_DB: javacode
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - "5432:5432"
    volumes:
      - ./db/initDB.sql:/docker-entrypoint-initdb.d/initDB.sql
    networks:
      app:

networks:
  app:
    driver: bridge
подключаемся не к "db" , а к "psql" - по имени сервиса.
Похожие вопросы