12.4.2. 外部データソースの設定
外部データソースを使用するには、カスタムイメージテンプレートを定義し、次に Source-to-Image(S2I)ビルドツールを使用してイメージを作成します。S2I は、アプリケーションのソースコードをインプットとして取り、組み立てられたアプリケーションをアウトプットとして実行する新規イメージを作成するフレームワークです。
以下にプロセスの概要を説明します。
イメージテンプレート JSON で
CUSTOM_INSTALL_DIRECTORIES
環境変数を指定します。この変数は、以下の例のように S2I アーティファクトの場所を定義します。{ "name": "CUSTOM_INSTALL_DIRECTORIES", "value": "extensions/*" }
そのディレクトリーに
install.sh
スクリプトを作成します。このスクリプトは、イメージに外部データソースのモジュールおよびドライバーをインストールします。以下は、
install.sh
スクリプトの例になります。#!/bin/bash # Import the common functions for # installing modules and configuring drivers source /usr/local/s2i/install-common.sh # Directory where this script is located injected_dir=$1 # Install the modules for the datasource install_modules ${injected_dir}/modules # Configure the drivers for the datasource configure_drivers ${injected_dir}/drivers.properties
データソースの
module.xml
ファイルとドライバーが含まれるmodules
サブディレクトリーを含めます。作成されたイメージはモジュールを使用してクラスを読み込み、依存関係を定義します。たとえば、外部データソースとして Derby を使用する計画を立てます。
derby-10.12.1.1.jar
などのドライバーを取得して、そのドライバーをmodules/org/apache/derby/main/
ディレクトリーに配置する必要があります。同じディレクトリーで、リソースとしてドライバーを定義し、依存関係を宣言する
module.xml
ファイルも作成する必要があります。以下は
module.xml
ファイルの例になります。<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.3" name="org.apache.derby"> <resources> <resource-root path="derby-10.12.1.1.jar"/> <resource-root path="derbyclient-10.12.1.1.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
drivers.property
環境変数ファイルで、ドライバー設定プロパティーを定義します。以下は、
drivers.property
ファイルの例です。#DRIVERS DRIVERS=DERBY DERBY_DRIVER_NAME=derby DERBY_DRIVER_MODULE=org.apache.derby DERBY_DRIVER_CLASS=org.apache.derby.jdbc.EmbeddedDriver DERBY_XA_DATASOURCE_CLASS=org.apache.derby.jdbc.EmbeddedXADataSource
イメージのビルドおよびデプロイ後に、データソースの環境変数を指定します。
次は、
DATASOURCES
環境変数でのデータソースの定義例を示しています。# Set a unique prefix for the datasource DATASOURCES=ACCOUNTS_DERBY # Specify other environment variables using the prefix ACCOUNTS_DERBY_DATABASE=accounts ACCOUNTS_DERBY_JNDI=java:/accounts-ds ACCOUNTS_DERBY_DRIVER=derby ACCOUNTS_DERBY_JTA=true ACCOUNTS_DERBY_NONXA=false ACCOUNTS_DERBY_USERNAME=${USERNAME} ACCOUNTS_DERBY_PASSWORD=${PASSWORD} ACCOUNTS_DERBY_XA_CONNECTION_PROPERTY_DatabaseName=/opt/eap/standalone/data/databases/derby/accounts # _HOST and _PORT are required but not used ACCOUNTS_ORACLE_HOST=dummy ACCOUNTS_ORACLE_PORT=1527