2024年12月21日土曜日

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

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

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


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

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

適当なディクレトリを作成し、以下の3つのファイルを配置します。JavaについてはAMD64かARMでファイルが異なります。また、Javaは17限定です。Oracle Spatial Studioは新しいバージョンでも、Dockerfileは変更せずにイメージが作れるはずです。
  • 上記のDockerfile
  • Oracle Spatial Studio Quick StartのZIPファイル - Oracle_Spatial_StudioQS_24.2.0.0.0.2.zip
  • Oracle JAVAのtar.gzファイル - jdk-17.0.13_linux-aarch64_bin.tar.gz
以下のコマンドを実行して、oracle/spatialstudio:24.2のコンテナ・イメージを作成します。

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

% ls

Dockerfile jdk-17.0.13_linux-aarch64_bin.tar.gz

Oracle_Spatial_StudioQS_24.2.0.0.0.2.zip

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

[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)           41 MB/s | 122 MB     00:02    

Oracle Linux 8 Application Stream (aarch64)      26 MB/s |  58 MB     00:02    

Last metadata expiration check: 0:00:07 ago on Sat Dec 21 22:12:35 2024.

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

Dependencies resolved.

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

 Package    Architecture Version                   Repository              Size

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

Installing:

 unzip      aarch64      6.0-47.0.1.el8_10         ol8_baseos_latest      189 k


Transaction Summary

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

Install  1 Package


Total download size: 189 k

Installed size: 474 k

Downloading Packages:

unzip-6.0-47.0.1.el8_10.aarch64.rpm             649 kB/s | 189 kB     00:00    

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

Total                                           647 kB/s | 189 kB     00:00     

Running transaction check

Transaction check succeeded.

Running transaction test

Transaction test succeeded.

Running transaction

  Preparing        :                                                        1/1 

  Installing       : unzip-6.0-47.0.1.el8_10.aarch64                        1/1 

  Running scriptlet: unzip-6.0-47.0.1.el8_10.aarch64                        1/1 

  Verifying        : unzip-6.0-47.0.1.el8_10.aarch64                        1/1 


Installed:

  unzip-6.0-47.0.1.el8_10.aarch64                                               


Complete!

--> aad6c07b36f1

[1/2] STEP 3/8: COPY ./Oracle_Spatial_StudioQS_*.zip /tmp/

--> 9cfc131ddde7

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

--> 9ef3ed3aa49a

[1/2] STEP 5/8: ENV JAVA_HOME=/usr/java/jdk-17

--> ee9ea150eb07

[1/2] STEP 6/8: COPY *.tar.gz /tmp/

--> af3d4ebe559d

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

time="2024-12-22T07:12:46+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"

--> 52e1788be936

[1/2] STEP 8/8: RUN set -eux;     ARCH="$(uname -m)" &&     if [ "$ARCH" = "x86_64" ];     then     mv "$(ls /tmp/jdk-17*_linux-x64_bin.tar.gz)" /tmp/jdk.tar.gz ;         JAVA_SHA256=f7a6fdebeb11840e1f5314bc330feb75b67e52491cf39073dbf3e51e3889ff08 ;     else     mv "$(ls /tmp/jdk-17*_linux-aarch64_bin.tar.gz)" /tmp/jdk.tar.gz ;         JAVA_SHA256=277e0010e7b17583e63827f9537a153ea79cb4b6ca28d523cd8a82f14a24a769 ;     fi &&     echo "$JAVA_SHA256 */tmp/jdk.tar.gz" | sha256sum -c -;     mkdir -p "$JAVA_HOME";     tar --extract --file /tmp/jdk.tar.gz --directory "$JAVA_HOME" --strip-components 1 ;     unzip -d /opt/oracle /tmp/Oracle_Spatial_StudioQS_*.zip

++ uname -m

+ ARCH=aarch64

+ '[' aarch64 = x86_64 ']'

++ ls /tmp/jdk-17.0.13_linux-aarch64_bin.tar.gz

+ mv /tmp/jdk-17.0.13_linux-aarch64_bin.tar.gz /tmp/jdk.tar.gz

+ JAVA_SHA256=277e0010e7b17583e63827f9537a153ea79cb4b6ca28d523cd8a82f14a24a769

+ echo '277e0010e7b17583e63827f9537a153ea79cb4b6ca28d523cd8a82f14a24a769 */tmp/jdk.tar.gz'

+ sha256sum -c -

/tmp/jdk.tar.gz: OK

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

+ tar --extract --file /tmp/jdk.tar.gz --directory /usr/java/jdk-17 --strip-components 1

+ unzip -d /opt/oracle /tmp/Oracle_Spatial_StudioQS_24.2.0.0.0.2.zip

Archive:  /tmp/Oracle_Spatial_StudioQS_24.2.0.0.0.2.zip

   creating: /opt/oracle/Oracle_Spatial_Studio/

   creating: /opt/oracle/Oracle_Spatial_Studio/conf/

  inflating: /opt/oracle/Oracle_Spatial_Studio/conf/keystore  

  inflating: /opt/oracle/Oracle_Spatial_Studio/conf/jetty-realm.properties  

  inflating: /opt/oracle/Oracle_Spatial_Studio/conf/server.json  

  inflating: /opt/oracle/Oracle_Spatial_Studio/start.sh  


[unzipの出力は省略]


  inflating: /opt/oracle/Oracle_Spatial_Studio/moduser.sh  

  inflating: /opt/oracle/Oracle_Spatial_Studio/README.txt  

  inflating: /opt/oracle/Oracle_Spatial_Studio/moduser.bat  

  inflating: /opt/oracle/Oracle_Spatial_Studio/restart.bat  

  inflating: /opt/oracle/Oracle_Spatial_Studio/start.bat  

  inflating: /opt/oracle/Oracle_Spatial_Studio/stop.bat  

time="2024-12-22T07:12:48+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"

--> 7f4cd502237c

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

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

--> Using cache 8964bc11495eb33b855f9d79cee5244aadc444312f6eefa71dd19a2b6d5f4fbc

--> 8964bc11495e

[2/2] STEP 3/10: ENV JAVA_HOME=/usr/java/jdk-17

--> Using cache ba78108b13d7c0eabb5fa231ea204947776728e64938f709ccb87f18185b7599

--> ba78108b13d7

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

--> Using cache 6022f0d99ca15c4f0f98e567f7b91f6fe3a0891a79d72456acccecee310c8470

--> 6022f0d99ca1

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

--> Using cache 45735317d43bac87dddf3242f9c80ab2ca2f2d11acc240c598f7fe4b7e476d32

--> 45735317d43b

[2/2] STEP 6/10: COPY --from=builder /opt/oracle/Oracle_Spatial_Studio /opt/oracle/Oracle_Spatial_Studio

--> Using cache 54a626e2b57f5afd6fbd452cc2e63f1db718da15aedaa008b299d4c3f5b4a7ce

--> 54a626e2b57f

[2/2] STEP 7/10: RUN set -eux;     dnf -y update;     dnf install -y         freetype fontconfig     ;     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;

--> Using cache 4cb9edfe67369ece48446c170f10dc708094c2e3f82cbf42870c8c2d15b172b0

--> 4cb9edfe6736

[2/2] STEP 8/10: EXPOSE 8080 4040

--> Using cache e8104354a4c8d55d65e64d317d309cd60a56c660eb834e98957a686a9c12bdd6

--> e8104354a4c8

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

--> Using cache 7078fe7d893437a03aea7941f7c0d21a507e0c6154deaf6804e3b4bd92c1ae92

--> 7078fe7d8934

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

--> Using cache ea3b1174bb0f955f9802a797254a7e247b0d6dece35dc0c5a4a054b1bb272ce7

[2/2] COMMIT oracle/spatialstudio:24.2

--> ea3b1174bb0f

Successfully tagged localhost/oracle/spatialstudio:24.2

ea3b1174bb0f955f9802a797254a7e247b0d6dece35dc0c5a4a054b1bb272ce7

% 


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

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

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

fbec8f31c73844fbb7bd9af4f9b7ce67003d2cceb64af4ba3d06e547a624e1f7

% 


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



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


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