# Copyright (c) 2020, 2024 Oracle and/or its affiliates. | |
# | |
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. | |
# | |
# ORACLE DOCKERFILES PROJECT | |
# -------------------------- | |
# This is the Dockerfile for Oracle JDK 17 on Oracle Linux 8 | |
# | |
# REQUIRED FILES TO BUILD THIS IMAGE | |
# ---------------------------------- | |
# (1) jdk-17.XX_linux-x64_bin.tar.gz or jdk-17.XX_linux-aarch64_bin.tar.gz | |
# Download from https://www.oracle.com/java/technologies/downloads | |
# | |
# HOW TO BUILD THIS IMAGE | |
# ----------------------- | |
# Put all downloaded files in the same directory as this Dockerfile | |
# Run: | |
# $ docker build -t oracle/jdk:17 . | |
# | |
# This command is already scripted in build.sh so you can alternatively run | |
# $ bash build.sh | |
# | |
# The builder image will be used to uncompress the tar.gz file with the Java Runtime. | |
FROM oraclelinux:8 as builder | |
# LABEL maintainer="Aurelio Garcia-Ribeyro <aurelio.garciaribeyro@oracle.com>" | |
# Since the files are compressed as tar.gz first dnf install tar. gzip is already in oraclelinux:8 | |
# FOR Spatial Studio - add unzip | |
RUN dnf install -y tar unzip | |
# FOR Spatial Studio - import Oracle Spatial Studio | |
COPY ./Oracle_Spatial_StudioQS_*.zip /tmp/ | |
# Default to UTF-8 file.encoding | |
ENV LANG en_US.UTF-8 | |
# Environment variables for the builder image. | |
# Required to validate that you are using the correct file | |
ENV JAVA_HOME=/usr/java/jdk-17 | |
## | |
COPY *.tar.gz /tmp/ | |
SHELL ["/bin/bash", "-o", "pipefail", "-c"] | |
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 | |
# FOR Spatial Studio - add unzip the last RUN | |
## Get a fresh version of Oracle Linux 8 for the final image | |
FROM oraclelinux:8 | |
# Default to UTF-8 file.encoding | |
ENV LANG en_US.UTF-8 | |
ENV JAVA_HOME=/usr/java/jdk-17 | |
ENV PATH $JAVA_HOME/bin:$PATH | |
# If you need the Java Version you can read it from the release file with | |
# JAVA_VERSION=$(sed -n '/^JAVA_VERSION="/{s///;s/"//;p;}' "$JAVA_HOME"/release); | |
# Copy the uncompressed Java Runtime from the builder image | |
COPY --from=builder $JAVA_HOME $JAVA_HOME | |
# FOR Spatial Studio - copy Spatial Studio from builder | |
COPY --from=builder /opt/oracle/Oracle_Spatial_Studio /opt/oracle/Oracle_Spatial_Studio | |
RUN set -eux; \ | |
# Ensure we get the latest OL 8 updates available at build time | |
dnf -y update; \ | |
# JDK assumes freetype is available | |
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; | |
# FOR Spatial Studio - start spatial studio | |
# CMD ["jshell"] | |
EXPOSE 8080 4040 | |
WORKDIR /opt/oracle/Oracle_Spatial_Studio | |
CMD ["sh", "-c", "/opt/oracle/Oracle_Spatial_Studio/start.sh"] |
- 上記の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
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
%
% podman run -d --name spatialstudio -p 8090:8080 -p 4040:4040 localhost/oracle/spatialstudio:24.2
fbec8f31c73844fbb7bd9af4f9b7ce67003d2cceb64af4ba3d06e547a624e1f7
%
ブラウザより以下のURLにアクセスします。自己署名証明書を使っているため、HTTPSの接続時に警告が表示されます。