FROM --platform=$TARGETPLATFORM entplus.jfrog.io/jfrog-docker/jfrog/echo-base:20260715 AS base
LABEL maintainer=infra@jfrog.com

ARG TARGETARCH

ENV uname=topology \
    gname=topology \
    JF_PRODUCT_HOME=/opt/jfrog/topology \
    JF_PRODUCT_DATA_INTERNAL=/var/opt/jfrog/topology \
    RECOMMENDED_MAX_OPEN_FILES=32000 \
    MIN_MAX_OPEN_FILES=10000 \
    RECOMMENDED_MAX_OPEN_PROCESSES=1024 \
    TARGETARCH=${TARGETARCH}

USER root

RUN groupadd -g 1126 topology \
    && useradd -Ms /bin/bash -g topology -u 1126 topology

FROM base AS builder

USER root

RUN mkdir -p ${JF_PRODUCT_HOME}/var/log
RUN mkdir -p ${JF_PRODUCT_HOME}/app/doc
RUN mkdir -p ${JF_PRODUCT_HOME}/app/bin
RUN mkdir -p ${JF_PRODUCT_HOME}/app/third-party/
RUN mkdir -p ${JF_PRODUCT_HOME}/app/install/
RUN mkdir -p ${JF_PRODUCT_HOME}/app/misc/newrelic/

COPY bin ${JF_PRODUCT_HOME}/app/bin
COPY Topology-About-Box.html ${JF_PRODUCT_HOME}/app/doc
COPY third-party-$TARGETARCH/ ${JF_PRODUCT_HOME}/app/third-party/
COPY installerCommon.sh ${JF_PRODUCT_HOME}/app/bin/
COPY systemYamlHelper.sh ${JF_PRODUCT_HOME}/app/bin/
COPY newrelic.jar ${JF_PRODUCT_HOME}/app/misc/newrelic/
COPY newrelic.template.yml ${JF_PRODUCT_HOME}/app/install/
COPY entrypoint-topology.sh ${JF_PRODUCT_HOME}/app/bin/

RUN chmod -R +x ${JF_PRODUCT_HOME}/app/third-party/java/bin
RUN chmod -R +x ${JF_PRODUCT_HOME}/app/third-party/yq
RUN chmod +x ${JF_PRODUCT_HOME}/app/bin/entrypoint-topology.sh

RUN chmod -R go+w ${JF_PRODUCT_HOME}/app ${JF_PRODUCT_HOME}/app/bin

FROM base

USER root

# Copy scripts
COPY --chown=${uname}:${gname} Dockerfile /docker/topology/

COPY --chown=${uname}:${gname} --from=builder ${JF_PRODUCT_HOME} ${JF_PRODUCT_HOME}

# Handle permissions and ownership in ${JF_PRODUCT_HOME}/app
RUN mkdir -p ${JF_PRODUCT_DATA_INTERNAL}/etc/security && \
    ln -s ${JF_PRODUCT_DATA_INTERNAL} ${JF_PRODUCT_HOME}/var && \
    chown -R ${uname}:${gname} ${JF_PRODUCT_HOME} ${JF_PRODUCT_DATA_INTERNAL} && \
    chmod -R 755 ${JF_PRODUCT_DATA_INTERNAL}

# The user that will run the container and topology
USER ${uname}

VOLUME ${JF_PRODUCT_DATA_INTERNAL}

# Change workdir to Topology Home
WORKDIR ${JF_PRODUCT_HOME}

# Start the simple standalone mode of Topology
ENTRYPOINT ["/usr/local/bin/fips-entrypoint.sh","/opt/jfrog/topology/app/bin/entrypoint-topology.sh"]