Настройте базу данных с помощью keycloak, используя имя службы базы данных - PullRequest
1 голос
/ 14 февраля 2020

Я уже успешно настроил базу данных с keycloak, используя базу данных SID и следующую конфигурацию. Тем не менее, я должен настроить другую базу данных, которая не имеет SID, но с service name в docker-compose файле. Я не смог найти способ настроить базу данных на keycloak, используя ее service name.

Конфигурация с использованием SID в docker -компонентном файле

         - name: DB_VENDOR
           value: ORACLE
         - name: DB_ADDR
           value: xxx.xx.xx.xxx
         - name: DB_PORT
           value: "1521"
         - name: DB_DATABASE
           value: sid_name
         - name: DB_USER
           value: db_user_name
         - name: DB_PASSWORD
           value: ******

Когда я попытался использовать service name вместо SID в качестве значения для DB_DATABASE, он выдал следующую ошибку.

Caused by: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

Благодарим вас за помощь в решении этой проблемы.

Спасибо Вы заранее ..

1 Ответ

0 голосов
/ 14 февраля 2020

Кажется, контейнер Keycloak docker его не поддерживает. Но вы можете создать собственное docker изображение, чтобы исправить это. Пожалуйста, посмотрите на файл change-database.cli , там есть строка:

connection-url=jdbc:oracle:thin:@${env.DB_ADDR:oracle}:${env.DB_PORT:1521}:${env.DB_DATABASE:XE}${env.JDBC_PARAMS:}

И вам нужна эта строка как эта (sla sh после порта вместо двоеточия, это требуется Oracle имя службы для работы):

connection-url=jdbc:oracle:thin:@${env.DB_ADDR:oracle}:${env.DB_PORT:1521}/${env.DB_DATABASE:XE}${env.JDBC_PARAMS:}

Поэтому измените этот файл и создайте пользовательский образ Keycloak docker. Dockerfile может выглядеть примерно так:

FROM jboss/keycloak:8.0.1
ADD /<path_on_your_system>/change-database.cli /opt/jboss/tools/cli/databases/oracle/change-database.cli 
...