Как я могу подключиться к 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