FROM python:3.12-slim ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV NP_HOST=0.0.0.0 ENV NP_PORT=18765 ENV ENABLE_RNAPLOT=1 WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ autoconf \ automake \ build-essential \ libgsl-dev \ libtool \ pkg-config \ perl \ && rm -rf /var/lib/apt/lists/* COPY nupack/vendor/nupack-4.1.0.1/package /tmp/nupack-package COPY rna/ViennaRNA-2.7.2.tar.gz /tmp/ViennaRNA-2.7.2.tar.gz RUN cd /tmp \ && tar -xzf ViennaRNA-2.7.2.tar.gz \ && cd ViennaRNA-2.7.2 \ && ./configure --without-python --without-perl \ && make -j"$(nproc)" \ && make install \ && ldconfig \ && rm -rf /tmp/ViennaRNA-2.7.2 /tmp/ViennaRNA-2.7.2.tar.gz RUN python -m pip install --no-cache-dir \ numpy==2.4.6 \ scipy==1.17.1 \ pandas==3.0.3 \ pyyaml==6.0.3 \ jinja2==3.1.6 \ /tmp/nupack-package/nupack-4.1.0.1-cp312-cp312-linux_x86_64.whl RUN python -m pip install --no-cache-dir redis==7.4.0 ARG NP_APP_VERSION=v5.4-nupack4.1.0.1 LABEL org.opencontainers.image.title="NP Replica" \ org.opencontainers.image.version="${NP_APP_VERSION}" \ org.opencontainers.image.description="NUPACK 4.1 mixed-material analysis and design service" WORKDIR /app/service COPY service /app/service EXPOSE 18765 CMD ["python", "server.py"]