-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathDockerfile
113 lines (84 loc) · 4.12 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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_GID 1586
ENV NUM_WORKERS 16
ENV GUNICORN_PORT 5000
ENV WORKER_CFG_DB /root/worker_cfg_db.csv
ENV LOG_LEVEL info
# RUN groupadd -g ${RUN_GID} runner${RUN_GID} && useradd -M runner${RUN_UID} -g ${RUN_GID} -u ${RUN_UID}
EXPOSE ${GUNICORN_PORT}
RUN mkdir execution_engine
COPY ./execution_engine /root/execution_engine
WORKDIR /root/execution_engine
CMD ["bash", "start_engine.sh"]