FROM ubuntu:22.04

RUN apt-get update && apt-get install -y ca-certificates \
                                         libssl3 \
                                         libboost-iostreams1.74.0 \
                                         libboost-serialization1.74.0 \
                                         curl \
                                         tar \
                                         unzip

RUN cd /tmp && \
    if [ $(dpkg --print-architecture) = "amd64" ]; then \
      curl -O https://rdkit-rs-debian.s3.eu-central-1.amazonaws.com/rdkit_2024_09_1_ubuntu_22_04_amd64.tar.gz; \
      tar xf rdkit_2024_09_1_ubuntu_22_04_amd64.tar.gz; \
    else \
      curl -O https://rdkit-rs-debian.s3.eu-central-1.amazonaws.com/rdkit_2024_09_1_ubuntu_22_04_arm64.tar.gz; \
      tar xf rdkit_2024_09_1_ubuntu_22_04_arm64.tar.gz; \
    fi; \
    mv /tmp/rdkit-Release_2024_09_1/Code /usr/local/include/rdkit; \
    mv /tmp/rdkit-Release_2024_09_1/build/lib/* /usr/lib/; \
    rm -rf /tmp/*

RUN cd /tmp && \
    if [ $(dpkg --print-architecture) = "amd64" ]; then \
      curl -O https://files.pythonhosted.org/packages/5b/00/af89cb211fc96ffdebb52a687dad7f83b0b1d82bc057f65309fa03a89911/tensorflow_cpu-2.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; \
      unzip tensorflow_cpu-2.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; \
    else \
      curl -O https://files.pythonhosted.org/packages/06/d5/05cd02db299821fd68ef5f8857506c21aeeddd024daf519d8643f0260952/tensorflow_cpu_aws-2.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; \
      unzip tensorflow_cpu_aws-2.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; \
      mv /tmp/tensorflow_cpu_aws.libs/libomp-54bf90fd.so.5 /usr/lib/; \
    fi; \
    mv /tmp/tensorflow/libtensorflow_cc.so.2 /usr/lib/; \
    mv /tmp/tensorflow/libtensorflow_framework.so.2 /usr/lib/; \
    ln -s /usr/lib/libtensorflow_cc.so.2 /usr/lib/libtensorflow_cc.so; \
    ln -s /usr/lib/libtensorflow_framework.so.2 /usr/lib/libtensorflow_framework.so; \
    ldconfig; \
    rm -rf /tmp/*

ENV CARGO_MANIFEST_DIR=/usr/local/lib/

ENV TF_CPP_MIN_LOG_LEVEL=3

COPY target/release/build/ /usr/local/lib/target/release/build/
RUN find /usr/local/lib/target/release/build/ -mindepth 1 -type d ! -path "/usr/local/lib/target/release/build/cheminee-similarity-model-*" -exec rm -rf {} +
COPY target/release/cheminee /usr/local/bin/cheminee

CMD ["cheminee", "rest-api-server", "--bind=0.0.0.0:4001"]