ARG ORACLE_FREE_IMAGE=container-registry.oracle.com/database/free:latest@sha256:8a8084193724b95bc62247e3af4218b357e4f172c78925551b2181dbe2566232
FROM eclipse-temurin:17-jre AS java-runtime

FROM ${ORACLE_FREE_IMAGE}

ARG APEX_VERSION=26.1
ARG APEX_DOWNLOAD_URL=https://download.oracle.com/otn_software/apex/apex_26.1_en.zip
ARG APEX_LOCAL_ZIP=
ARG APEX_IMAGES_URL_PREFIX=/i/
ARG ORDS_DOWNLOAD_URL=https://download.oracle.com/otn_software/java/ords/ords-latest.zip
ARG ORDS_LOCAL_ZIP=
ARG INSTALL_APEX=true
ARG INSTALL_ORDS=true

USER root

COPY --from=java-runtime /opt/java/openjdk /opt/java/openjdk

ENV APEX_VERSION=${APEX_VERSION} \
    APEX_DOWNLOAD_URL=${APEX_DOWNLOAD_URL} \
    APEX_LOCAL_ZIP=${APEX_LOCAL_ZIP} \
    APEX_IMAGES_URL_PREFIX=${APEX_IMAGES_URL_PREFIX} \
    JAVA_HOME=/opt/java/openjdk \
    PATH=/opt/java/openjdk/bin:${PATH} \
    ORDS_DOWNLOAD_URL=${ORDS_DOWNLOAD_URL} \
    ORDS_LOCAL_ZIP=${ORDS_LOCAL_ZIP} \
    INSTALL_APEX=${INSTALL_APEX} \
    INSTALL_ORDS=${INSTALL_ORDS} \
    ORDS_CONFIG_DIR=/opt/oracle/ords-config \
    ORDS_STANDALONE_PORT=4500

# Install APEX at build time (starts Oracle, runs apexins.sql, shuts down)
COPY docker/oracle/build-install-apex.sh /tmp/build-install-apex.sh
COPY docker/oracle/installers/ /tmp/nexo-installers/
RUN chmod 0755 /tmp/build-install-apex.sh
USER oracle
RUN if [ "${INSTALL_APEX}" = "true" ]; then /tmp/build-install-apex.sh; else echo "Skipping APEX install"; fi
USER root
RUN rm -f /tmp/build-install-apex.sh

# Install ORDS on top of the APEX-enabled database
RUN mkdir -p /opt/oracle/ords /opt/oracle/ords-config /opt/oracle/scripts/startup \
    && if [ "${INSTALL_ORDS}" = "true" ]; then \
      if [ -n "${ORDS_LOCAL_ZIP}" ]; then cp "/tmp/nexo-installers/${ORDS_LOCAL_ZIP}" /tmp/ords-latest.zip; else curl -fsSL "${ORDS_DOWNLOAD_URL}" -o /tmp/ords-latest.zip; fi \
      && unzip -q -o /tmp/ords-latest.zip -d /opt/oracle/ords \
      && rm -f /tmp/ords-latest.zip \
      && ln -sf /opt/oracle/ords/bin/ords /usr/local/bin/ords; \
    else \
      echo "Skipping ORDS install"; \
    fi \
    && rm -rf /tmp/nexo-installers \
    && chown -R oracle:oinstall /opt/oracle/ords /opt/oracle/ords-config /opt/oracle/scripts

COPY docker/oracle/configure-start-ords.sh /opt/oracle/scripts/startup/70-start-ords.sh
RUN chmod 0755 /opt/oracle/scripts/startup/70-start-ords.sh

USER oracle

EXPOSE 4500

LABEL org.opencontainers.image.title="nexo-sql-studio-oracle" \
      org.opencontainers.image.description="Oracle test image with APEX and ORDS for Nexo SQL Studio CI" \
      org.opencontainers.image.source="https://github.com/nexo-sql-studio/nexo-sql-studio"
