FROM --platform=$TARGETPLATFORM entplus.jfrog.io/jfrog-docker/jfrog/echo-base:20260623 as base
LABEL maintainer=infra@jfrog.com
LABEL name=jfrog/jfmelt

ARG TARGETARCH
ARG HTTP=8032
ARG GRPC=8038

ENV uname=jfmelt \
    gname=jfmelt \
    JF_PRODUCT_DATA_INTERNAL=/var/opt/jfrog/jfmelt \
    JF_PRODUCT_HOME=/opt/jfrog/jfmelt \
    TARGETARCH=${TARGETARCH:-arm64} \
    HTTP=${HTTP} \
    GRPC=${GRPC}

USER root

RUN groupadd -g 1128 jfmelt \
    && useradd -Ms /bin/bash -g jfmelt -u 1128 jfmelt

FROM base as builder

USER root

COPY ./bin/jfmelt-linux-${TARGETARCH} ${JF_PRODUCT_HOME}/app/jfmelt/bin/jfmelt
COPY ./app/doc/JFrog-JFMelt-Third-Parties-Usage-About-Box.html ${JF_PRODUCT_HOME}/app/doc/JFrog-JFMelt-Third-Parties-Usage-About-Box.html
COPY configuration-manager/installerCommon.sh configuration-manager/systemYamlHelper.sh ${JF_PRODUCT_HOME}/app/bin/

RUN chmod -R 775 ${JF_PRODUCT_HOME}/app/bin/*.sh ${JF_PRODUCT_HOME}/app/jfmelt/bin/* && chown -R ${uname}:${gname} ${JF_PRODUCT_HOME}

FROM base

USER root

# Copy scripts
COPY --chown=${uname}:${uname} Dockerfile /docker/jfmelt/
COPY --chown=${uname}:${uname} entrypoint-jfmelt.sh ${JF_PRODUCT_HOME}/app/bin/
RUN chmod +x ${JF_PRODUCT_HOME}/app/bin/entrypoint-jfmelt.sh

COPY --from=builder $JF_PRODUCT_HOME $JF_PRODUCT_HOME
COPY third-party/yq-${TARGETARCH} ${JF_PRODUCT_HOME}/app/third-party/yq

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 775 ${JF_PRODUCT_HOME} && \
    chmod -R 777 ${JF_PRODUCT_DATA_INTERNAL}

EXPOSE ${HTTP} ${GRPC}

USER ${uname}

VOLUME ${JF_PRODUCT_DATA_INTERNAL}

WORKDIR ${JF_PRODUCT_HOME}

ENTRYPOINT ["/usr/local/bin/fips-entrypoint.sh","/opt/jfrog/jfmelt/app/bin/entrypoint-jfmelt.sh"]