Как использовать Java в базе данных Docker и PostgreSQL?

Я разрабатываю игрушечное приложение Heroku и хочу использовать базу данных PostgreSQL для хранения конфигураций. Я либо вижу учебные пособия по использованию Java + PostgreSQL, либо Java в Docker.

Я не могу найти способ использовать Java в Docker + PostgreSQL.

ПРИМЕЧАНИЕ. База данных — довольно неважная часть. Это может быть что угодно, что может сохранять информацию, например Redis, другие базы данных.

Я просмотрел StackOverflow, учебные пособия и документацию Heroku, но пока безуспешно.

Как я могу подключиться к PostgreSQL из Java в Docker на Heroku?


person Dmytro Chasovskyi    schedule 09.11.2020    source источник


Ответы (1)


Как я могу подключиться к PostgreSQL из Java в Docker на Heroku?

Соответствующую документацию можно найти по следующему URL-адресу:

https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-java

Подводя итог, Heroku обеспечивает встроенную поддержку PostgreSQL (независимо от Docker), и ваше Java-приложение может подключаться к базе данных с помощью выделенной переменной среды DATABASE_URL (или JDBC_DATABASE_URL), которую в вашем случае следует экспортировать как переменную среды контейнера Docker. , развертывание приложения через реестр контейнеров Docker Heroku.

Это соответствует рекомендациям Docker в отношении доступа к внешним базам данных, а именно, база данных PostgreSQL не является частью контейнера приложения, но контейнер приложения взаимодействует с базой данных через HTTP-запросы.

Дополнительные детали

Кроме того, если вы заинтересованы в CI/CD или в полном локальном тестировании вашего приложения с полной конфигурацией разработки, включающей копию (или заглушку) вашей базы данных PostgreSQL, позвольте мне отметить, что вы можете быть заинтересованы при разработке docker-compose.yml конфигурации, такой как следующая:

version: '3'
services:
  db:
    image: 'postgres:12'
    # v12 → https://devcenter.heroku.com/articles/heroku-postgresql#version-support
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: TestPhasePassword
      POSTGRES_DB: mydb
    # The following is UNNEEDED for the app service to access the db.
    # Enable it ONLY IF YOU NEED TO ALSO ACCESS THE DB FROM THE HOST.
    # ports:
    #   - '5432:5432'
    networks:
      - db-net
  app:
    build: .
    # image: name-of-your-app  # optional
    environment:
      DATABASE_URL: 'postgres://postgres:TestPhasePassword@db/mydb'
    ports:
      - '8080:8080'
    networks:
      - db-net
    depends_on:
      - db
networks:
  db-net:
    driver: bridge

и просто запустите docker-compose up.

Итак, здесь сервис db — это просто экземпляр для разработки/тестирования… учитывая, что единственный образ, предназначенный для отправки/выпуска в Heroku, — это образ app

person ErikMD    schedule 09.11.2020