FROM ubuntu:22.04 AS build

RUN apt-get update && \
    apt-get install --yes --no-install-recommends \
        ca-certificates \
        wget \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*

RUN wget \
        -O /usr/bin/yq \
        'https://github.com/mikefarah/yq/releases/download/v4.48.1/yq_linux_amd64' \
    && chmod a+x /usr/bin/yq

ENV MAMBA_ROOT_PREFIX=/app/conda-env-data
ENV CONDA_PKGS_DIRS=/app/conda-env-data/pkgs

# Copy package source
COPY . /app

ADD https://github.com/mamba-org/micromamba-releases/releases/download/2.3.2-0/micromamba-linux-64 /app/micromamba
RUN chmod +x /app/micromamba \
    && ln -s /app/micromamba /usr/bin/micromamba

RUN micromamba env create --prefix /conda-env --yes --file /app/tmp-env-spec-88344b62d74b9307.yaml \
    && micromamba env export --prefix /conda-env \
        | yq eval 'del(.prefix)' \
        | yq eval '.channels = (.channels // [])' \
        | yq eval '.dependencies = (.dependencies // [])' \
        > /app/frozen-spec.yaml \
    && rm /app/tmp-env-spec-88344b62d74b9307.yaml

# In case original spec file has any secrets (no idea if it can) - we better re-export full environment to keep only frozen spec.
FROM ubuntu:22.04 AS app

ENV MAMBA_ROOT_PREFIX=/app/conda-env-data
ENV CONDA_PKGS_DIRS=/app/conda-env-data/pkgs

COPY --from=build /app /app
RUN ln -s /app/micromamba /usr/bin/micromamba

# Imitate the same procedure of environment restoration as we do on host in binary execution mode.
RUN micromamba env create --prefix /conda-env --yes --offline --override-channels --file /app/frozen-spec.yaml

ENTRYPOINT ["micromamba", "run", "--prefix", "/conda-env"]
