2024年12月22日日曜日

Oracle Graph Serverのコンテナ・イメージを作成する

Oracle Graph Serverのコンテナ・イメージを作成してみました。

TL;DR


APEX向けの構成スクリプトのリポジトリに、Oracle Graph Serverのコンテナを作るためのファイルを追加しました。
git clone https://github.com/ujnak/apex-podman-setup
cd apex-podman-setup/graph
製品rpmは以下のページよりダウンロードします。アーキテクチャに合わせて、oracle-graph-<version>.x86_64.rpmまたはoracle-graph-<version>.aarch64.rpmを、ディレクトリgraph/filesの下に配置します。


以上で準備は完了です。コンテナ・イメージをビルドしてコンテナの作成と実行を行います。
podman build --file Dockerfile --tag oracle/graph:latest .
podman run -d --name oraclegraph -p 7007:7007 -e JAVA_TOOL_OPTIONS="-Xms1G -Xmx2G" localhost/oracle/graph:latest

構築手順の紹介


@ryotayamanakaさんのQiitaの記事「Graph Serverコンテナ作成(23.4)」の記事に多くを依っています。公式のドキュメントは以下です。

Oracle Graph ServerはARM版のバージョン24.4のRPM(または最新のバージョン)を使用します。Dockerfileは、Oracleが配布しているOracleJavaのOracle Linux 8のJava21向けのものを元に、Graph Serverもインストールするように記述を追加します。


イメージの作成には、macOSのpodmanを使用します。

OSのパッケージとしてnumactl, libgcc, libgfortranを追加していますが、これはEnterprise Schedulerの要件を満たすためだと思います。Enterprise SchedulerはARMでは動かないようで(OS要件はLinux (x86_64)となっている)、ARMでは不要かもしれません。


コンテナ・イメージに含める設定ファイルとしてserver.confを作成します。enable_tlsfalseにして、HTTPで接続するようにします。


もう一つの設定ファイルとしてpgx.confを作成します。schedulerとしてbasic_schedulerを選択し(x86_64であればenterprise_schedulerが動くので不要です)、pgx_realmoptionsに含まれるjdbc_urlbase_urlを変更しています。


適当なディクレトリを作成し、以下の4つのファイルを配置します。

oracle-graph-<version>.<arch>.rpmについては、ディレクトリfilesを作成して、その下にファイルを置きます。Oracle Graph Serverは、以下のページにアクセスしてダウンロードします。Oracle Graph Serverのアーカイブは、AMD64かARMでファイルが異なります。

https://www.oracle.com/database/graph/downloads.html

Oracle Graph Serverは新しいバージョンでも、Dockerfileは変更せずにイメージが作れるはずです。
  • 上記のDockerfile
  • Oracle Graph Serverのrpmファイル(filesの下) - oracle-graph-<version>.<arch>.rpm
  • 上記のserver.conf
  • 上記のpgx.conf
以下のコマンドを実行して、oracle/graph:latestのコンテナ・イメージを作成します。

podman build --file Dockerfile --tag oracle/graph:latest .

% podman build --file Dockerfile --tag oracle/graph:latest .

[1/2] STEP 1/6: FROM oraclelinux:8 AS builder

[1/2] STEP 2/6: RUN set -eux;     dnf install -y tar;

+ dnf install -y tar

Oracle Linux 8 BaseOS Latest (aarch64)          9.9 MB/s | 137 MB     00:13    

Oracle Linux 8 Application Stream (aarch64)      10 MB/s |  64 MB     00:06    

Last metadata expiration check: 0:00:10 ago on Fri Aug  1 08:36:47 2025.

Package tar-2:1.30-9.el8.aarch64 is already installed.

Dependencies resolved.

================================================================================

 Package   Architecture  Version                  Repository               Size

================================================================================

Upgrading:

 tar       aarch64       2:1.30-10.el8_10         ol8_baseos_latest       830 k


Transaction Summary

================================================================================

Upgrade  1 Package


[中略]


[2/2] STEP 8/12: COPY ./server.conf /etc/oracle/graph/server.conf

--> 57b07733a3c5

[2/2] STEP 9/12: COPY ./pgx.conf /etc/oracle/graph/pgx.conf

--> a6d7586673f4

[2/2] STEP 10/12: EXPOSE 7007

--> 2bf0e8b7e545

[2/2] STEP 11/12: WORKDIR /opt/oracle/graph/bin

--> 99ab66416e6d

[2/2] STEP 12/12: CMD ["sh", "/opt/oracle/graph/pgx/bin/start-server"]

[2/2] COMMIT oracle/graph:latest

--> c82c95112e1b

Successfully tagged localhost/oracle/graph:latest

c82c95112e1befe0a069633ffefaafd670db6625b821006b677c89e34aee1dc0

% 


作成されたコンテナ・イメージからコンテナを作成して、Oracle Graph ServerのWeb UIにアクセスします。

podman run -d --name oraclegraph -p 7007:7007 -e JAVA_TOOL_OPTIONS="-Xms1G -Xmx2G" localhost/oracle/graph:latest

% podman run -d --name oraclegraph -p 7007:7007 -e JAVA_TOOL_OPTIONS="-Xms1G -Xmx2G" localhost/oracle/graph:latest

34899dd4d9d378633cd1666909def7caa6272b4d775fcb4f977e21d084c532be

% 


ブラウザより以下のURLにアクセスします。



今回の構成は、ローカルのコンテナとしてOracle Graph Serverを実行し、同じくローカルで実行しているOracle Database 23ai Freeにアクセスすることを想定しています。また、APEXのワークスペース・スキーマを接続ユーザーとします。

公式のドキュメントのUser Authentication and Authorizationのセクションにユーザーの設定方法が記載されていますが、Oracle Autonomous Databaseおよび23aiではGRAPH_DEVELOPERとGRAPH_ADMINISTRATORのロールは作成済みなので、ロールを割り当てるとOracle Graph Serverからアクセスできるようになります。以下では、APEXのワークスペース・スキーマをWKSP_APEXDEVとしています。

grant graph_developer to wksp_apexdev;
grant graph_administrator to wksp_apexdev;

ワークスペース・スキーマをUsername、スキーマのパスワードをPasswordに与えてSUBMITをクリックするとGraph Visualizationの画面が開きます。


今回の記事は以上になります。