2024年12月22日日曜日

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

2025年11月14日: oracle-graph-25.3.0.aarch64.rpmでコンテナの作成と動作を確認

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のコンテナ・イメージを作成します。

podman build  --tag oracle-graph .

graph % podman build  --tag oracle-graph .

[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)          6.0 MB/s | 148 MB     00:24    

Oracle Linux 8 Application Stream (aarch64)     7.7 MB/s |  66 MB     00:08    

Last metadata expiration check: 0:00:10 ago on Fri Nov 14 03:52:45 2025.

Package tar-2:1.30-11.el8_10.aarch64 is already installed.

Dependencies resolved.

Nothing to do.

Complete!

--> 4a64b479a4ed

[1/2] STEP 3/6: ENV LANG en_US.UTF-8

--> d3f9fdf17997

[1/2] STEP 4/6: ENV JAVA_URL=https://download.oracle.com/java/21/latest     JAVA_HOME=/usr/java/jdk-21

--> e7a1a384c0bd

[1/2] STEP 5/6: SHELL ["/bin/bash", "-o", "pipefail", "-c"]

time="2025-11-14T12:52:58+09:00" level=warning msg="SHELL is not supported for OCI image format, [/bin/bash -o pipefail -c] will be ignored. Must use `docker` format"

--> ac9026d384d6

[1/2] STEP 6/6: RUN set -eux;     ARCH="$(uname -m)" &&     if [ "$ARCH" = "x86_64" ];         then ARCH="x64";     fi &&     JAVA_PKG="$JAVA_URL"/jdk-21_linux-"${ARCH}"_bin.tar.gz ;     JAVA_SHA256=$(curl "$JAVA_PKG".sha256) ;     curl --output /tmp/jdk.tgz "$JAVA_PKG" &&     echo "$JAVA_SHA256" */tmp/jdk.tgz | sha256sum -c;     mkdir -p "$JAVA_HOME";     tar --extract --file /tmp/jdk.tgz --directory "$JAVA_HOME" --strip-components 1

++ uname -m

+ ARCH=aarch64

+ '[' aarch64 = x86_64 ']'

+ JAVA_PKG=https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.tar.gz

++ curl https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.tar.gz.sha256

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100    64  100    64    0     0    275      0 --:--:-- --:--:-- --:--:--   275

+ JAVA_SHA256=6e0eef0f229e121dd432358b60e2755bc0916b207bcef014839c78cf9e4367ac

+ curl --output /tmp/jdk.tgz https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.tar.gz

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  186M  100  186M    0     0  8301k      0  0:00:22  0:00:22 --:--:-- 8288k

+ sha256sum -c

+ echo 6e0eef0f229e121dd432358b60e2755bc0916b207bcef014839c78cf9e4367ac '*/tmp/jdk.tgz'

/tmp/jdk.tgz: OK

+ mkdir -p /usr/java/jdk-21

+ tar --extract --file /tmp/jdk.tgz --directory /usr/java/jdk-21 --strip-components 1

time="2025-11-14T12:53:23+09:00" level=warning msg="SHELL is not supported for OCI image format, [/bin/bash -o pipefail -c] will be ignored. Must use `docker` format"

--> 610b36ac7f5e

[2/2] STEP 1/12: FROM oraclelinux:8

[2/2] STEP 2/12: ENV LANG en_US.UTF-8

--> Using cache 3c9aed82232a0d4fea8b8643a42bf61575a15f8eb9dab83a53a3558801de4e32

--> 3c9aed82232a

[2/2] STEP 3/12: ENV JAVA_HOME=/usr/java/jdk-21

--> e95cd03e1816

[2/2] STEP 4/12: ENV PATH $JAVA_HOME/bin:$PATH

--> 86b076d61d22

[2/2] STEP 5/12: COPY --from=builder $JAVA_HOME $JAVA_HOME

--> c4d6daf4bb85

[2/2] STEP 6/12: COPY ./files/oracle-graph-*.rpm /tmp/

--> 9f3a6b0d07f2

[2/2] STEP 7/12: RUN set -eux;     dnf -y update;     dnf install -y         freetype fontconfig unzip numactl gcc libgfortran python3.11 python3.11-pip     ;     dnf install -y         /tmp/oracle-graph-*.rpm ;     rm -f /tmp/oracle-graph-*.rpm ;     alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 20000 ;     alternatives --install /usr/bin/pip3 pip3 /usr/bin/pip3.11 2000 ;     pip3 install oracle-graph-client ;     rm -rf /var/cache/dnf;     ln -sfT "$JAVA_HOME" /usr/java/default;     ln -sfT "$JAVA_HOME" /usr/java/latest;     for bin in "$JAVA_HOME/bin/"*; do         base="$(basename "$bin")";         [ ! -e "/usr/bin/$base" ];         alternatives --install "/usr/bin/$base" "$base" "$bin" 20000;     done;

+ dnf -y update

Oracle Linux 8 BaseOS Latest (aarch64)          5.6 MB/s | 148 MB     00:26    

Oracle Linux 8 Application Stream (aarch64)     7.1 MB/s |  66 MB     00:09    

Last metadata expiration check: 0:00:10 ago on Fri 14 Nov 2025 03:54:15 AM UTC.

Dependencies resolved.

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

 Package          Arch    Version                       Repository         Size

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

Upgrading:

 bash             aarch64 4.4.20-6.el8_10               ol8_baseos_latest 1.5 M

 bind-export-libs aarch64 32:9.11.36-16.el8_10.6        ol8_baseos_latest 1.1 M

 ca-certificates  noarch  2025.2.80_v9.0.304-80.2.el8_10


[中略]


Installed:

  libxkbcommon-0.9.1-1.el8.aarch64       shared-mime-info-1.9-4.el8.aarch64    

  trousers-0.3.15-2.el8.aarch64          trousers-lib-0.3.15-2.el8.aarch64     

  xkeyboard-config-2.28-1.el8.noarch    


Complete!

+ dnf install -y freetype fontconfig unzip numactl gcc libgfortran python3.11 python3.11-pip

Last metadata expiration check: 0:00:19 ago on Fri 14 Nov 2025 03:54:15 AM UTC.

Dependencies resolved.

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

 Package                       Arch     Version                Repository          Size

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

Installing:

 fontconfig                    aarch64  2.13.1-4.el8           ol8_baseos_latest  272 k

 freetype                      aarch64  2.9.1-10.el8_10        ol8_baseos_latest  369 k

 gcc                           aarch64  8.5.0-28.0.1.el8_10    ol8_appstream       19 M

 libgfortran                   aarch64  8.5.0-28.0.1.el8_10    ol8_baseos_latest  353 k


[中略]


Installed:

  binutils-2.30-127.0.1.el8_10.aarch64                                          

  cpp-8.5.0-28.0.1.el8_10.aarch64                                               

  dejavu-fonts-common-2.35-7.el8.noarch                                         

  dejavu-sans-fonts-2.35-7.el8.noarch                                           

  fontconfig-2.13.1-4.el8.aarch64                                               

  fontpackages-filesystem-1.44-22.el8.noarch                                    

  freetype-2.9.1-10.el8_10.aarch64                                              

  gcc-8.5.0-28.0.1.el8_10.aarch64                                               

  glibc-devel-2.28-251.0.3.el8_10.25.aarch64                                    

  glibc-headers-2.28-251.0.3.el8_10.25.aarch64                                  

  isl-0.16.1-6.el8.aarch64                                                      

  kernel-headers-4.18.0-553.83.1.el8_10.aarch64                                 

  libasan-8.5.0-28.0.1.el8_10.aarch64                                           

  libatomic-8.5.0-28.0.1.el8_10.aarch64                                         

  libgfortran-8.5.0-28.0.1.el8_10.aarch64                                       

  libgomp-8.5.0-28.0.1.el8_10.aarch64                                           

  libmpc-1.1.0-9.1.el8.aarch64                                                  

  libpkgconf-1.4.2-1.el8.aarch64                                                

  libpng-2:1.6.34-5.el8.aarch64                                                 

  libubsan-8.5.0-28.0.1.el8_10.aarch64                                          

  libxcrypt-devel-4.1.1-6.el8.aarch64                                           

  mpdecimal-2.5.1-3.el8.aarch64                                                 

  numactl-2.0.16-4.el8.aarch64                                                  

  numactl-libs-2.0.16-4.el8.aarch64                                             

  pkgconf-1.4.2-1.el8.aarch64                                                   

  pkgconf-m4-1.4.2-1.el8.noarch                                                 

  pkgconf-pkg-config-1.4.2-1.el8.aarch64                                        

  python3.11-3.11.13-2.0.1.el8_10.aarch64                                       

  python3.11-libs-3.11.13-2.0.1.el8_10.aarch64                                  

  python3.11-pip-22.3.1-5.el8.noarch                                            

  python3.11-pip-wheel-22.3.1-5.el8.noarch                                      

  python3.11-setuptools-65.5.1-4.el8_10.noarch                                  

  python3.11-setuptools-wheel-65.5.1-4.el8_10.noarch                            

  unzip-6.0-48.0.1.el8_10.aarch64                                               


Complete!

+ dnf install -y /tmp/oracle-graph-25.4.0.0.aarch64.rpm

Last metadata expiration check: 0:00:35 ago on Fri 14 Nov 2025 03:54:15 AM UTC.

Dependencies resolved.

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

 Package            Architecture  Version             Repository           Size

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

Installing:

 oracle-graph       aarch64       25.4.0-0            @commandline        1.8 G

Installing dependencies:

 jq                 aarch64       1.6-11.el8_10       ol8_appstream       189 k

 oniguruma          aarch64       6.8.2-3.el8         ol8_appstream       180 k


Transaction Summary

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

Install  3 Packages


Total size: 1.8 G

Total download size: 369 k

Installed size: 1.9 G

Downloading Packages:

(1/2): jq-1.6-11.el8_10.aarch64.rpm             1.3 MB/s | 189 kB     00:00    

(2/2): oniguruma-6.8.2-3.el8.aarch64.rpm        1.1 MB/s | 180 kB     00:00    

--------------------------------------------------------------------------------

Total                                           2.2 MB/s | 369 kB     00:00     

Running transaction check

Transaction check succeeded.

Running transaction test

Transaction test succeeded.

Running transaction

  Preparing        :                                                        1/1 

  Installing       : oniguruma-6.8.2-3.el8.aarch64                          1/3 

  Running scriptlet: oniguruma-6.8.2-3.el8.aarch64                          1/3 

  Installing       : jq-1.6-11.el8_10.aarch64                               2/3 

  Running scriptlet: oracle-graph-25.4.0-0.aarch64                          3/3 

  Installing       : oracle-graph-25.4.0-0.aarch64                          3/3 

  Running scriptlet: oracle-graph-25.4.0-0.aarch64                          3/3 

Starting post-installation process ...

1. Creating PGX temp directory /opt/oracle/graph/pgx/tmp_data

2. Creating log directory /var/log/oracle/graph

3. Building server war file /opt/oracle/graph/pgx/server/graph-server-webapp-25.4.0.war

/var/tmp/rpm-tmp.ZpXidN: line 52: zip: command not found

warning: Unable to build server war file /opt/oracle/graph/pgx/server/graph-server-webapp-25.4.0.war

4. Generating demo server keystore ...

Warning: Installation could not generate demo server keystore, keytool is not installed.

Post-installation process completed


  Verifying        : jq-1.6-11.el8_10.aarch64                               1/3 

  Verifying        : oniguruma-6.8.2-3.el8.aarch64                          2/3 

  Verifying        : oracle-graph-25.4.0-0.aarch64                          3/3 


Installed:

  jq-1.6-11.el8_10.aarch64               oniguruma-6.8.2-3.el8.aarch64         

  oracle-graph-25.4.0-0.aarch64         


Complete!

+ rm -f /tmp/oracle-graph-25.4.0.0.aarch64.rpm

+ alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 20000

+ alternatives --install /usr/bin/pip3 pip3 /usr/bin/pip3.11 2000

+ pip3 install oracle-graph-client

Collecting oracle-graph-client

  Downloading oracle-graph-client-25.4.0.zip (72.2 MB)

     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 72.2/72.2 MB 8.0 MB/s eta 0:00:00

  Preparing metadata (setup.py): started

  Preparing metadata (setup.py): finished with status 'done'

Collecting numpy>=2.0.2

  Downloading numpy-2.3.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (14.6 MB)

     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.6/14.6 MB 7.9 MB/s eta 0:00:00

Collecting pyjnius>=1.6.1

  Downloading pyjnius-1.7.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.6 MB)

     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 10.0 MB/s eta 0:00:00

Collecting pandas>=2.2.2

  Downloading pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (12.2 MB)

     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.2/12.2 MB 7.4 MB/s eta 0:00:00

Collecting python-dateutil>=2.8.2

  Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)

     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 229.9/229.9 kB 8.8 MB/s eta 0:00:00

Collecting pytz>=2020.1

  Downloading pytz-2025.2-py2.py3-none-any.whl (509 kB)

     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 509.2/509.2 kB 9.7 MB/s eta 0:00:00

Collecting tzdata>=2022.7

  Downloading tzdata-2025.2-py2.py3-none-any.whl (347 kB)

     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 347.8/347.8 kB 6.9 MB/s eta 0:00:00

Collecting six>=1.5

  Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)

Installing collected packages: pytz, pyjnius, tzdata, six, numpy, python-dateutil, pandas, oracle-graph-client

  DEPRECATION: oracle-graph-client is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559

  Running setup.py install for oracle-graph-client: started

  Running setup.py install for oracle-graph-client: finished with status 'done'

Successfully installed numpy-2.3.4 oracle-graph-client-25.4.0 pandas-2.3.3 pyjnius-1.7.0 python-dateutil-2.9.0.post0 pytz-2025.2 six-1.17.0 tzdata-2025.2

WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

+ rm -rf /var/cache/dnf

+ ln -sfT /usr/java/jdk-21 /usr/java/default

+ ln -sfT /usr/java/jdk-21 /usr/java/latest

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jar

+ base=jar

+ '[' '!' -e /usr/bin/jar ']'

+ alternatives --install /usr/bin/jar jar /usr/java/jdk-21/bin/jar 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jarsigner

+ base=jarsigner

+ '[' '!' -e /usr/bin/jarsigner ']'

+ alternatives --install /usr/bin/jarsigner jarsigner /usr/java/jdk-21/bin/jarsigner 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/java

+ base=java

+ '[' '!' -e /usr/bin/java ']'

+ alternatives --install /usr/bin/java java /usr/java/jdk-21/bin/java 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/javac

+ base=javac

+ '[' '!' -e /usr/bin/javac ']'

+ alternatives --install /usr/bin/javac javac /usr/java/jdk-21/bin/javac 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/javadoc

+ base=javadoc

+ '[' '!' -e /usr/bin/javadoc ']'

+ alternatives --install /usr/bin/javadoc javadoc /usr/java/jdk-21/bin/javadoc 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/javap

+ base=javap

+ '[' '!' -e /usr/bin/javap ']'

+ alternatives --install /usr/bin/javap javap /usr/java/jdk-21/bin/javap 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jcmd

+ base=jcmd

+ '[' '!' -e /usr/bin/jcmd ']'

+ alternatives --install /usr/bin/jcmd jcmd /usr/java/jdk-21/bin/jcmd 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jconsole

+ base=jconsole

+ '[' '!' -e /usr/bin/jconsole ']'

+ alternatives --install /usr/bin/jconsole jconsole /usr/java/jdk-21/bin/jconsole 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jdb

+ base=jdb

+ '[' '!' -e /usr/bin/jdb ']'

+ alternatives --install /usr/bin/jdb jdb /usr/java/jdk-21/bin/jdb 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jdeprscan

+ base=jdeprscan

+ '[' '!' -e /usr/bin/jdeprscan ']'

+ alternatives --install /usr/bin/jdeprscan jdeprscan /usr/java/jdk-21/bin/jdeprscan 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jdeps

+ base=jdeps

+ '[' '!' -e /usr/bin/jdeps ']'

+ alternatives --install /usr/bin/jdeps jdeps /usr/java/jdk-21/bin/jdeps 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jfr

+ base=jfr

+ '[' '!' -e /usr/bin/jfr ']'

+ alternatives --install /usr/bin/jfr jfr /usr/java/jdk-21/bin/jfr 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jhsdb

+ base=jhsdb

+ '[' '!' -e /usr/bin/jhsdb ']'

+ alternatives --install /usr/bin/jhsdb jhsdb /usr/java/jdk-21/bin/jhsdb 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jimage

+ base=jimage

+ '[' '!' -e /usr/bin/jimage ']'

+ alternatives --install /usr/bin/jimage jimage /usr/java/jdk-21/bin/jimage 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jinfo

+ base=jinfo

+ '[' '!' -e /usr/bin/jinfo ']'

+ alternatives --install /usr/bin/jinfo jinfo /usr/java/jdk-21/bin/jinfo 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jlink

+ base=jlink

+ '[' '!' -e /usr/bin/jlink ']'

+ alternatives --install /usr/bin/jlink jlink /usr/java/jdk-21/bin/jlink 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jmap

+ base=jmap

+ '[' '!' -e /usr/bin/jmap ']'

+ alternatives --install /usr/bin/jmap jmap /usr/java/jdk-21/bin/jmap 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jmod

+ base=jmod

+ '[' '!' -e /usr/bin/jmod ']'

+ alternatives --install /usr/bin/jmod jmod /usr/java/jdk-21/bin/jmod 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jpackage

+ base=jpackage

+ '[' '!' -e /usr/bin/jpackage ']'

+ alternatives --install /usr/bin/jpackage jpackage /usr/java/jdk-21/bin/jpackage 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jps

+ base=jps

+ '[' '!' -e /usr/bin/jps ']'

+ alternatives --install /usr/bin/jps jps /usr/java/jdk-21/bin/jps 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jrunscript

+ base=jrunscript

+ '[' '!' -e /usr/bin/jrunscript ']'

+ alternatives --install /usr/bin/jrunscript jrunscript /usr/java/jdk-21/bin/jrunscript 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jshell

+ base=jshell

+ '[' '!' -e /usr/bin/jshell ']'

+ alternatives --install /usr/bin/jshell jshell /usr/java/jdk-21/bin/jshell 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jstack

+ base=jstack

+ '[' '!' -e /usr/bin/jstack ']'

+ alternatives --install /usr/bin/jstack jstack /usr/java/jdk-21/bin/jstack 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jstat

+ base=jstat

+ '[' '!' -e /usr/bin/jstat ']'

+ alternatives --install /usr/bin/jstat jstat /usr/java/jdk-21/bin/jstat 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jstatd

+ base=jstatd

+ '[' '!' -e /usr/bin/jstatd ']'

+ alternatives --install /usr/bin/jstatd jstatd /usr/java/jdk-21/bin/jstatd 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/jwebserver

+ base=jwebserver

+ '[' '!' -e /usr/bin/jwebserver ']'

+ alternatives --install /usr/bin/jwebserver jwebserver /usr/java/jdk-21/bin/jwebserver 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/keytool

+ base=keytool

+ '[' '!' -e /usr/bin/keytool ']'

+ alternatives --install /usr/bin/keytool keytool /usr/java/jdk-21/bin/keytool 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/rmiregistry

+ base=rmiregistry

+ '[' '!' -e /usr/bin/rmiregistry ']'

+ alternatives --install /usr/bin/rmiregistry rmiregistry /usr/java/jdk-21/bin/rmiregistry 20000

+ for bin in "$JAVA_HOME/bin/"*

++ basename /usr/java/jdk-21/bin/serialver

+ base=serialver

+ '[' '!' -e /usr/bin/serialver ']'

+ alternatives --install /usr/bin/serialver serialver /usr/java/jdk-21/bin/serialver 20000

--> 7d2e38a1ee96

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

--> 80f3a1ff9d2e

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

--> 465ffc4df774

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

--> 3514b2852cd9

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

--> 3b30515f36ce

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

[2/2] COMMIT oracle-graph

--> 9409539cec61

Successfully tagged localhost/oracle-graph:latest

9409539cec6134a9bb460ab9a5764d3b5af67a15ea2a6ff467e4155eaefc7499

graph % 


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

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

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

5ef3b95379d12f380835e3693ddfe02678cd33f839d043b8d1decb6986d42b4b

graph % 


ブラウザより以下の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の画面が開きます。


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