11# syntax=docker/dockerfile:1
2- FROM alpine:3.14
2+ FROM openjdk:19-alpine
33
44# Prepare the environment
55RUN apk add maven git
@@ -12,53 +12,65 @@ COPY pom.xml .
1212RUN mvn package || exit
1313
1414
15- FROM ubuntu:20.04
15+ FROM openjdk:19-alpine
16+
17+ ARG GROUP_ID
18+ ARG USER_ID
1619
1720# Create a user
18- RUN adduser --disabled-password --home /home/user --gecos '' user
21+ RUN addgroup -g $GROUP_ID user
22+ RUN adduser --disabled-password -G user -u $USER_ID --home /home/user --gecos '' user
1923
2024# Prepare the environment
21- RUN apt-get update \
22- && apt-get install -y --no-install-recommends tzdata
23- RUN apt-get install -y --no-install-recommends build-essential libelf-dev libssl-dev flex bison libselinux1-dev git
24-
25- # Setup working directory
26- WORKDIR /resources
27- COPY ./docker-resources/ubuntu-repos.txt .
28-
29- # Install jdk-8 and gcc-4.4
30- RUN apt-get remove -y openjdk-*
31- RUN apt-get remove -y gcc
32- RUN apt-get install -y --no-install-recommends openjdk-8-jdk
33- RUN cat ubuntu-repos.txt >> /etc/apt/sources.list
34- RUN apt-get update \
35- && apt-get install -y --no-install-recommends gcc-4.4
36- RUN ln -s /bin/gcc-4.4 /bin/gcc
37- RUN rm -rf Extraction
38- RUN gcc --version
39- RUN java -version
40- RUN apt-get install -y --no-install-recommends bc
25+ RUN apk update
26+ RUN apk add git bash
27+
28+
29+
30+ ENV GOSU_VERSION 1.16
31+ RUN set -eux; \
32+ \
33+ apk add --no-cache --virtual .gosu-deps \
34+ ca-certificates \
35+ dpkg \
36+ gnupg \
37+ ; \
38+ \
39+ dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')" ; \
40+ wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" ; \
41+ wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" ; \
42+ \
43+ # verify the signature
44+ export GNUPGHOME="$(mktemp -d)" ; \
45+ gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
46+ gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
47+ command -v gpgconf && gpgconf --kill all || :; \
48+ rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
49+ \
50+ # clean up fetch dependencies
51+ apk del --no-network .gosu-deps; \
52+ \
53+ chmod +x /usr/local/bin/gosu; \
54+ # verify that the binary works
55+ gosu --version; \
56+ gosu nobody true
57+
4158
4259
4360WORKDIR /home/user
4461# Copy JAR from previous stage
4562COPY --from=0 /home/user/target /home/user/target
46- RUN cp target/Extraction-jar-with* .
63+ RUN cp target/* Extraction-jar-with* .
4764
4865# Copy required scripts and properties
49- COPY docker-resources/extract.sh /home/user/
50- COPY docker-resources/entrypoint.sh /home/user/
51- COPY docker-resources/fix-perms.sh /home/user/
52- COPY docker-resources/KernelHaven.jar /home/user/
53- COPY docker-resources/extraction_busybox.properties /home/user/
54- COPY docker-resources/extraction_linux.properties /home/user/
55- COPY docker-resources/extraction_generic.properties /home/user/
56-
57- RUN mkdir -p /home/user/extraction-results/output
66+ COPY docker-resources/* /home/user/
67+ RUN mkdir -p /home/user/src/main/resources
68+
69+ RUN mkdir -p /home/user/ground-truth/
70+ # permissions for calculon
5871RUN chown user:user /home/user -R
5972RUN chmod +x entrypoint.sh
6073RUN chmod +x fix-perms.sh
6174RUN chmod +x extract.sh
6275
6376ENTRYPOINT ["./entrypoint.sh" , "./extract.sh" ]
64- USER user
0 commit comments