Spaces:
Sleeping
Sleeping
FROM ubuntu:jammy | |
WORKDIR /root | |
ENV DEBIAN_FRONTEND noninteractive | |
ENV TZ Etc/UTC | |
RUN apt-get update && \ | |
apt-get install -y \ | |
gnupg ca-certificates apt-utils \ | |
build-essential curl unzip && \ | |
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF | |
RUN echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | tee /etc/apt/sources.list.d/mono-official-stable.list | |
RUN apt-get update && \ | |
apt-get install -y tzdata | |
RUN apt-get install -y mono-devel \ | |
gcc-12 g++-12 | |
RUN apt-get update && \ | |
apt-get install -y software-properties-common python3.11-dev | |
RUN apt-get update && \ | |
apt-get install -y -f libasound2 libc6-i386 libc6-x32 libxi6 libxtst6 | |
ENV JAVA_PKG=https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz \ | |
JAVA_HOME=/usr/java/jdk-21 | |
RUN set -eux; \ | |
JAVA_SHA256=$(curl "$JAVA_PKG".sha256) ; \ | |
curl --output /tmp/jdk.tgz "$JAVA_PKG" && \ | |
echo "$JAVA_SHA256 */tmp/jdk.tgz" | sha256sum -c; \ | |
mkdir -p "$JAVA_HOME"; \ | |
tar --extract --file /tmp/jdk.tgz --directory "$JAVA_HOME" --strip-components 1 | |
RUN curl -OL https://github.com/JetBrains/kotlin/releases/download/v1.7.20/kotlin-compiler-1.7.20.zip | |
RUN unzip kotlin-compiler-1.7.20.zip -d /usr/local && \ | |
rm kotlin-compiler-1.7.20.zip | |
RUN apt-get install -y python2 | |
RUN curl -OL https://go.dev/dl/go1.19.2.linux-amd64.tar.gz | |
RUN tar -C /usr/local -xzf go1.19.2.linux-amd64.tar.gz && \ | |
rm go1.19.2.linux-amd64.tar.gz | |
RUN curl -OL https://downloads.python.org/pypy/pypy3.9-v7.3.9-linux64.tar.bz2 | |
RUN tar -C /usr/local -xf pypy3.9-v7.3.9-linux64.tar.bz2 && \ | |
rm pypy3.9-v7.3.9-linux64.tar.bz2 | |
RUN curl -OL https://downloads.python.org/pypy/pypy2.7-v7.3.9-linux64.tar.bz2 | |
RUN tar -C /usr/local -xf pypy2.7-v7.3.9-linux64.tar.bz2 && \ | |
rm pypy2.7-v7.3.9-linux64.tar.bz2 | |
RUN apt-get install -y clang-14 | |
ARG NODE_VERSION=v16.17.1 | |
ARG NODE_DISTRO=linux-x64 | |
ARG NODE_ZIP=node-$NODE_VERSION-$NODE_DISTRO.tar.xz | |
RUN curl -OL https://nodejs.org/dist/$NODE_VERSION/$NODE_ZIP | |
RUN tar -C /usr/local -xJvf $NODE_ZIP && \ | |
rm $NODE_ZIP | |
ENV RUSTUP_HOME /opt/rust | |
ENV CARGO_HOME /opt/rust | |
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path | |
RUN apt-get install -y ruby-full | |
RUN apt-get update && apt-get install -y --no-install-recommends --fix-missing php8.1 | |
RUN apt-get install -y libgmp-dev libmpfr-dev | |
ENV PATH $PATH:/usr/local/go/bin:/usr/local/kotlinc/bin:/usr/local/node-v16.17.1-linux-x64/bin:/opt/rust/bin | |
WORKDIR /root | |
RUN update-alternatives --install /usr/bin/java java "$JAVA_HOME"/bin/java 100 && \ | |
update-alternatives --install /usr/bin/javac javac "$JAVA_HOME"/bin/javac 100 && \ | |
update-alternatives --install /usr/bin/jar jar "$JAVA_HOME"/bin/jar 100 && \ | |
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 && \ | |
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100 && \ | |
update-alternatives --install /usr/bin/python python /usr/bin/python3.11 100 && \ | |
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 100 && \ | |
update-alternatives --install /usr/bin/pypy2 pypy2 /usr/local/pypy2.7-v7.3.9-linux64/bin/pypy2 100 && \ | |
update-alternatives --install /usr/bin/pypy3 pypy3 /usr/local/pypy3.9-v7.3.9-linux64/bin/pypy3 100 | |
RUN apt-get install -y python3-pip gperf | |
RUN pip install flask gunicorn flask-cors gmpy2 Cython jsonlines fire | |
RUN curl -o libseccomp.tar.gz -L https://github.com/seccomp/libseccomp/releases/download/v2.5.4/libseccomp-2.5.4.tar.gz | |
RUN tar -xzvf libseccomp.tar.gz && cd libseccomp-2.5.4 && chmod +x configure | |
WORKDIR /root/libseccomp-2.5.4 | |
RUN ./configure --prefix=/usr --enable-python && make | |
RUN make install | |
WORKDIR /root/ | |
RUN rm -rf libseccomp* | |
ENV RUN_UID 1586 | |
ENV RUN_UID2 1587 | |
ENV RUN_GID 1586 | |
ENV RUN_GID2 1587 | |
ENV NUM_WORKERS 2 | |
ENV GUNICORN_PORT 7860 | |
ENV LOG_LEVEL info | |
RUN groupadd -g ${RUN_GID} runner${RUN_GID} && useradd -M runner${RUN_UID} -g ${RUN_GID} -u ${RUN_UID} | |
RUN groupadd -g ${RUN_GID2} runner${RUN_GID2} && useradd -M runner${RUN_UID2} -g ${RUN_GID2} -u ${RUN_UID2} | |
# EXPOSE ${GUNICORN_PORT} !!! | |
EXPOSE 7860 | |
RUN useradd -m -u 1000 user | |
RUN mkdir -p /home/user/execution_engine | |
COPY --chown=user ./execution_engine /home/user/execution_engine | |
RUN chmod -R 777 /home/user/execution_engine | |
USER user | |
RUN touch /home/user/worker_cfg_db.csv | |
ENV WORKER_CFG_DB /home/user/worker_cfg_db.csv | |
ENV PATH="/home/user/.local/bin:$PATH" | |
WORKDIR /home/user/execution_engine | |
CMD | |