FROM ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ python3 python3-pip python3-dev \ build-essential gcc g++ make \ autoconf automake libtool m4 perl \ libgmp-dev libhwloc15 libhwloc-dev libgomp1 \ zlib1g-dev git \ && rm -rf /var/lib/apt/lists/* RUN pip install --no-cache-dir --break-system-packages gmpy2 flask requests RUN git clone --depth 1 https://gitlab.inria.fr/zimmerma/ecm.git /tmp/ecm-src \ && cd /tmp/ecm-src \ && autoreconf -i && ./configure CFLAGS="-O2" \ && make -j"$(nproc)" && make install && ldconfig \ && cp ecm /usr/local/bin/ecm \ && rm -rf /tmp/ecm-src COPY cado-nfs.tar.gz /tmp/ RUN tar xzf /tmp/cado-nfs.tar.gz -C / \ && rm /tmp/cado-nfs.tar.gz \ && chmod +x /opt/cado-nfs/build/release/sieve/las \ /opt/cado-nfs/build/release/polyselect/polyselect \ && python3 /opt/cado-nfs/build/release/cado-nfs.py --help > /dev/null 2>&1 COPY ramnfs/broker.c ramnfs/shim.c /opt/ramnfs/ RUN cd /opt/ramnfs \ && gcc -O2 -pthread -o broker broker.c -lpthread \ && gcc -O2 -fPIC -shared -o shim.so shim.c -ldl -lpthread \ && chmod +x broker RUN userdel -r ubuntu 2>/dev/null; useradd -m -u 1000 -s /usr/sbin/nologin miner WORKDIR /app COPY enigma_challenges /app/enigma_challenges/ COPY breaking_rsa.py /app/ ENV ECM_BIN=/usr/local/bin/ecm \ CADO_NFS=/opt/cado-nfs/build/release/cado-nfs.py \ RAMNFS_BROKER=/opt/ramnfs/broker \ RAMNFS_SHIM=/opt/ramnfs/shim.so \ RAMNFS_SOCK=/tmp/ramnfs.sock \ RAMNFS_WORKDIR=/ramwork/factor.work \ HOME=/tmp \ TMPDIR=/tmp \ WALL_TIME=14400 \ DEADLINE_MARGIN=120 \ ECM_PRETEST_CAP=60 \ PYTHONUNBUFFERED=1 USER miner ENTRYPOINT ["python3", "/app/breaking_rsa.py"]