Загрузочное приложение Dockerized Spring подключается к базе данных docker образ - PullRequest
1 голос
/ 31 января 2020

У меня есть базовое c приложение для весенней загрузки с gradle, которое выполняет вызовы к базе данных Oracle, а свойства базы данных указаны в файле application.properties.

Я создал образ Docker весеннего загрузочного приложения с плагином com.google.cloud.tools.jib и с помощью следующей команды:

./gradlew jibDockerBuild --image=app1

У меня есть docker -композитный файл, в котором я указываю изображение как службы, и я хочу, чтобы приложение запускалось при запуске команды: "docker -compose up"

Файл docker -compose является следующим:

version: '3'
    services:
        app1:
            image: "app1"
            ports:
                - "8731:8731"

Но когда я запускаю команду «docker -compose up» в CMD, я получаю следующее исключение:

 java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection

Дополнительные сведения:

  1. Моя Oracle база данных docker контейнер с именем: "ORA12201_1" и портом 3769
  2. Внутри application.properties указанные свойства базы данных верны, так как я могу запустить приложение из IntelliJ

1 Ответ

0 голосов
/ 31 января 2020

вы можете без проблем подключиться к IntelliJ, поскольку контейнер предоставляет порт (3769) хосту (ваш P C), но теперь вы пытаетесь подключиться из одного Docker контейнера к другому.
Контейнеры не разделяют сеть (изоляция), поэтому вам необходимо подключить их.

Один из рекомендуемых подходов - Пользовательские сети

Сначала создайте сеть

docker network create --driver bridge my_network

Запустите приложения

docker run -p 5432:5432 --network my_network -d --name=postgres postgres
docker run -p 5050:80 --network my_network -d --name=pgadmin dpage/pgadmin4

Вы можете убедиться, что они эффективно работают в одной сети с

docker network inspect my_network

Конфигурация Spring Boot

Теперь вы можете подключаться друг к другу, используя host.docker.internal в качестве имени хоста, например, в приложении Spring Boot.properties

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