2024年12月21日土曜日

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

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

TL;DR


APEX向けの構成スクリプトのリポジトリに、Oracle Spatial Studioのコンテナを作るためのファイルを追加しました。
git clone https://github.com/ujnak/apex-podman-setup
cd apex-podman-setup/spatial
製品rpmは以下のページよりダウンロードします。V*-01.zipという名前のファイルで、ZIPを展開するとOracle_Spatial_Studioというディレクトリが作成されます。このファイルをディレクトリspatial/files以下に配置します。

https://www.oracle.com/database/technologies/spatial-studio/oracle-spatial-studio-downloads.html

JDK17のアーカイブを以下のページよりダウンロードします。DockerfileのJAVA_SHA256にファイルのチェックサムが記載されているため、JDK17.0.16でないとチェックサム・エラーが発生します。こちらはアーキテクチャに合わせてjdk-17.0.16_linux-x64_bin.tar.gzjdk-17.0.16_linux-aarch64_bin.tar.gzのどちらかをディレクトリspatial/files以下に配置します。

https://www.oracle.com/java/technologies/downloads/#java17

以上で準備は完了です。コンテナ・イメージをビルドしてコンテナの作成と実行を行います。
podman build --file Dockerfile --tag oracle/spatialstudio:latest .
podman run -d --name spatialstudio -p 8090:8080 -p 4040:4040 localhost/oracle/spatialstudio:latest

構築手順の紹介



Oracle社が提供しているOracle Linux 8とJava 17のDockerfileを元にしています。


Oracle Spatial Studioを動かすための修正を少々加えています。

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

適当なディクレトリを作成し、以下の4つのファイルを配置します。JavaについてはAMD64かARMでファイルが異なります。また、Javaは17限定です。Oracle Spatial StudioのZIPファイルはディレクトリfilesを作成し、その下に配置します。Oracle Spatial Studioは新しいバージョンでも、Dockerfileは変更せずにイメージが作れるはずです。
  • 上記のDockerfile
  • Oracle Spatial Studio Quick StartのZIPファイル(filesの下) - V1050194-01.zip(バージョンが上がるとファイル名が変わります)
  • Oracle JAVAのtar.gzファイル - jdk-17.0.16_linux-aarch64_bin.tar.gz
  • Spatial Studioのコンテナ向け起動スクリプトStart_Spatial_Studio.sh
JDK17のアーカイブについてはDockerfile内にチェックサムが記載されているため、17.0.16とは異なるバージョンのアーカイブを配置した場合は、DockerfileにJAVA_SHA256として記載されているチェックサムを置き換える必要があります。

以下のコマンドを実行して、oracle/spatialstudio:latestのコンテナ・イメージを作成します。

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

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

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

[1/2] STEP 2/8: RUN dnf install -y tar unzip

Oracle Linux 8 BaseOS Latest (aarch64)           10 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:09 ago on Fri Aug  1 08:53:19 2025.

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

Dependencies resolved.

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

 Package    Architecture Version                   Repository              Size

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

Installing:

 unzip      aarch64      6.0-48.0.1.el8_10         ol8_baseos_latest      189 k

Upgrading:

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


Transaction Summary

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

Install  1 Package

Upgrade  1 Package


[中略]



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

+ base=serialver

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

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

--> 370818a642c2

[2/2] STEP 9/11: EXPOSE 8080 4040

--> aa39701c135f

[2/2] STEP 10/11: WORKDIR /opt/oracle/Oracle_Spatial_Studio

--> a26b388c8f55

[2/2] STEP 11/11: CMD ["sh", "-c", "/opt/oracle/Oracle_Spatial_Studio/Start_Spatial_Studio.sh"]

[2/2] COMMIT oracle/spatialstudio:latest

--> 1c9b6de485df

Successfully tagged localhost/oracle/spatialstudio:latest

1c9b6de485df57b9a0315754965284c0d79ed392c0463e29604cc560037c1044

% 


作成されたコンテナ・イメージからコンテナを作成して、Oracle Spatial Studioにアクセスします。私の環境ではポート番号8080が使用されているため8090にマップしています。ただし、Oracle Spatial StudioはHTTPSで動作するため、アクセス先は4040番ポートです

podman run -d --name spatialstudio -p 8090:8080 -p 4040:4040 localhost/oracle/spatialstudio:latest

% podman run -d --name spatialstudio -p 8090:8080 -p 4040:4040 localhost/oracle/spatialstudio:latest

42eddba20281a7c9701840934feb1f0d521cbd14faec636dbe4b36891d0d1925

%


ブラウザより以下のURLにアクセスします。自己署名証明書を使っているため、HTTPSの接続時に警告が表示されます。



Oracle Spatial Studioのデフォルトのユーザー設定なので、admin/welcome1で接続できます。リポジトリの接続設定から始めることができます。


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