JavaRush /Java блог /Java Developer /Как развернуть Postgres в Docker и подключить к Spring-Bo...
Павел
11 уровень

Как развернуть Postgres в Docker и подключить к Spring-Boot приложению

Статья из группы Java Developer
Перед этим необходимо: - Установить Docker; - Установить IntelliJ IDEA Ultimate как получить бесплатно на 30 дней; - В Intellij IDEA установить плагин Docker. Например, вы создали Spring-Boot приложение с сущностью:

@Entity
public class Person {

    @Id
    @Column
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    Long id;

    @Column
    String name;

//конструктор, геттеры, сеттеры
}
Что бы реализовать подключение к Postgres выполняем следующие шаги: 1. В pom.xml вставляем зависимость

<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.3.1</version>
</dependency>
2. В корневой папке проекта создаем файл: docker-compose.yaml (на скриншотах опечатка) На картинке корневая папка java-rush-docker Как развернуть Postgres в Docker и подключить ее к Spring-Boot приложению. - 1 Содержимое файла:

version: '3'

services:
  postgres:
    image: 'postgres:13'
    container_name: 'java-postgres'
    ports:
    - 5432:5432
    environment:
      - 'POSTGRES_USER=sa'
      - 'POSTGRES_HOST_AUTH_METHOD=trust'
      - 'POSTGRES_DB=java'
На одной строке с postgres: будет зеленая стрелочка, ее надо нажать. В нижней части IntelliJ IDEA во вкладке Services будет отображаться процесс, после выполнения должна появиться запись: Status: Downloaded newer image for postgres:13 Creating java-postgres ... 'Compose: docker-compouse.yaml' has been deployed successfully. Значит все хорошо. В левом окне появиться примерно следующее: Как развернуть Postgres в Docker и подключить ее к Spring-Boot приложению. - 2 Это значит, что в сервисе postgres поднялся контейнер java-postgres. В папке Images должен быть образ postgres 13. 3. В файле application.yaml (или application.properties) должны быть указаны следующие настройки:

spring:
  datasource:
    driverClassName: org.postgresql.Driver
    url: jdbc:postgresql://localhost:5432/postgres
    username: sa
    password:

  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.PostgreSQLDialect
Теперь можно запускать Spring-Boot проект. 4. После того как проект запустился настраиваем подключение: Как развернуть Postgres в Docker и подключить ее к Spring-Boot приложению. - 3 Нажимаем вкладку Database, нажимаем «+» в выпавшем списке выбираем Postgres, в поле user вписываем имя пользователя (username: sa), проверяем есть ли коннекшен. Если все хорошо, то нажимаем Apply и Ok. Появится следующее окно: Как развернуть Postgres в Docker и подключить ее к Spring-Boot приложению. - 4 База данных развернута и подключена. Если захотелось узнать больше про Docker: В этой статье найдите видео про Docker и реализуйте то, что там показывается. Прочитайте мануал по основам Docker. Прихраните Основные команды Docker.
Комментарии (15)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
VorKos Уровень 35
11 марта 2024
Добрый день! Подскажите, почему написанная программа с верно указанными настройками в файле .yml, не может подключиться к развернутому и запущенному контейнеру PostgreSQL? Docker-compose: version: "2" services: postgres: image: postgres:12.3 ports: - "5678:5678" environment: - 'POSTGRES_USER=root' - 'POSTGRES_PASSWORD=root' - 'POSTGRES_DB=contacts' volumes: - ./init.sql:/docker-entrypoint-initdb.d/init.sql Application.yaml: spring: jpa: properties: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect show-sql: true hibernate: ddl-auto: create-drop datasource: url: jdbc:postgresql://localhost:5678/contacts username: root password: root driverClassName: org.postgresql.Driver hikari: schema: contacts_schema init.sql: CREATE SCHEMA IF NOT EXISTS contacts_schema; CREATE TABLE IF NOT EXISTS contacts_schema.contact ( id BIGINT PRIMARY KEY, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, phone VARCHAR(255) NOT NULL );
Петрович Уровень 36
21 марта 2023
у меня скромный вопрос, а зачем в данном случае использовать, docker-compose если просто можна использовать просто Docker в данном случае?
Вадим Уровень 23
14 апреля 2022
Пардон за нубство (галопом по европам), но pom файл нам при этом не нужен? те DockerCompose заменяет мавен? А так спасибо, своевременно, Еще бы продолжение -что с этим дальше делать?
Yaroslav Golota Уровень 25
10 декабря 2021
Ошибка в названии файла: docker-compouse.yaml -> docker-compose.yaml