forked from dodona-edu/docker-images
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdodona-tested.dockerfile
67 lines (64 loc) · 2.58 KB
/
dodona-tested.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
FROM python:3.11.5-slim-bullseye
# Environment Kotlin
ENV SDKMAN_DIR /usr/local/sdkman
ENV PATH $SDKMAN_DIR/candidates/kotlin/current/bin:$PATH
ENV NODE_PATH /usr/lib/node_modules
# Add manual directory for default-jdk
# hadolint ignore=DL3008
RUN mkdir -p /usr/share/man/man1mkdir -p /usr/share/man/man1 \
&& apt-get update \
# Install additional dependencies
&& apt-get install -y --no-install-recommends \
procps=2:3.3.17-5 \
dos2unix=7.4.1-1 \
curl=7.74.0-1.3+deb11u7 \
zip=3.0-12 \
unzip=6.0-26+deb11u1 \
&& curl https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb --output packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
# Add nodejs v18
&& bash -c 'set -o pipefail && curl -fsSL https://deb.nodesource.com/setup_18.x | bash -' \
# Install programming languages \
&& apt-get install -y --no-install-recommends \
# TESTed Java and Kotlin judge dependency
openjdk-17-jdk \
checkstyle=8.36.1-1 \
# TESTed Haskell judge dependency
haskell-platform=2014.2.0.0.debian8 \
hlint=3.1.6-1 \
# TESTed C judge dependency
gcc=4:10.2.1-1 \
cppcheck=2.3-1 \
# TESTed Javascript judge dependency
nodejs \
# TESTed bash judge dependency
shellcheck=0.7.1-1+deb11u1 \
# C# dependency
dotnet-sdk-6.0=6.0.405-1 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
# TESTed Judge depencencies
&& pip install --no-cache-dir --upgrade psutil==5.9.5 attrs==22.2.0 cattrs==23.1.2 jsonschema==4.18.4 typing_inspect==0.9.0 pyyaml==6.0 Pygments==2.15.1 python-i18n==0.3.9 pylint==2.17.1 \
# TESTed Kotlin judge dependencies
&& bash -c 'set -o pipefail && curl -s "https://get.sdkman.io?rcupdate=false" | bash' \
&& chmod a+x "$SDKMAN_DIR/bin/sdkman-init.sh" \
&& bash -c "source \"$SDKMAN_DIR/bin/sdkman-init.sh\" && sdk install kotlin 1.8.0" \
&& curl -sSLO https://github.com/pinterest/ktlint/releases/download/0.48.2/ktlint \
&& chmod a+x ktlint \
&& mv ktlint /usr/local/bin \
# JavaScript dependencies
&& npm install -g eslint@8.36 abstract-syntax-tree@2.17.6 \
# Haskell dependencies
&& cabal update \
&& cabal v1-install --global aeson \
# Make sure the students can't find our secret path, which is mounted in
# /mnt with a secure random name.
&& chmod 711 /mnt \
# Add the user which will run the student's code and the judge.
&& useradd -m runner \
&& mkdir /home/runner/workdir \
&& chown -R runner:runner /home/runner/workdir
USER runner
WORKDIR /home/runner/workdir
COPY main.sh /main.sh