1
- FROM python:3.12.4-slim-bookworm as common-base
1
+ # syntax=docker/dockerfile:1.3
2
+ FROM --platform=$BUILDPLATFORM python:3.12-slim-bookworm AS common-base
3
+ ARG TARGETARCH
2
4
3
- ENV DJANGO_SETTINGS_MODULE config.settings.local
4
- ENV PYTHONUNBUFFERED 1
5
- ENV PYTHONDONTWRITEBYTECODE 1
5
+ ENV DJANGO_SETTINGS_MODULE= config.settings.local
6
+ ENV PYTHONUNBUFFERED= 1
7
+ ENV PYTHONDONTWRITEBYTECODE= 1
6
8
7
9
ARG local_folder=/uploads
8
10
9
11
RUN apt-get update \
10
- # dependencies for building Python packages
11
12
&& apt-get install -y --no-install-recommends build-essential \
12
- # ldap
13
13
libsasl2-dev python3-dev libldap2-dev libssl-dev \
14
- # psycopg2 dependencies
15
- libpq-dev \
16
- # archive
17
- libmagic1 p7zip-full \
18
- # Translations dependencies
19
- gettext \
20
- # git for cloning
21
- git \
14
+ libpq-dev libmagic1 p7zip-full gettext git \
22
15
&& apt-get clean \
23
16
&& rm -rf /var/lib/apt/lists/*
24
17
25
- # App running in /app
26
18
RUN mkdir -p /app
27
19
28
- FROM common-base as base-builder
20
+ FROM common-base AS base-builder
29
21
RUN apt-get update \
30
- && apt-get install --no-install-recommends -y \
31
- # utils
32
- curl unzip \
33
- # cleaning up unused files
22
+ && apt-get install --no-install-recommends -y curl unzip \
23
+ automake libtool make gcc pkg-config flex bison libssl-dev libjansson-dev libmagic-dev \
34
24
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
35
25
&& rm -rf /var/lib/apt/lists/*
36
26
37
- FROM golang:alpine3.20 as go-builder
38
- RUN apk add git
39
- WORKDIR /
40
- RUN git clone https://github.com/volatilityfoundation/dwarf2json.git
41
- WORKDIR /dwarf2json
42
- RUN /usr/local/go/bin/go build
27
+ FROM base-builder AS yara-builder
28
+ WORKDIR /tmp
29
+ RUN git clone --recursive https://github.com/VirusTotal/yara.git
30
+ WORKDIR /tmp/yara
31
+ RUN ./bootstrap.sh \
32
+ && ./configure --enable-cuckoo --enable-magic --enable-dotnet --with-crypto \
33
+ && make \
34
+ && make install \
35
+ && echo "Install yara-python..."
36
+ WORKDIR /tmp
37
+ RUN git clone --branch v4.3.x --recursive https://github.com/VirusTotal/yara-python
38
+ WORKDIR /tmp/yara-python
39
+ RUN python setup.py build
40
+
41
+ FROM common-base AS go-builder
42
+ ARG TARGETARCH
43
+ RUN apt-get update && apt-get install -y curl
44
+ RUN echo "Building for platform: $TARGETARCH" \
45
+ && if [ "$TARGETARCH" = "amd64" ]; then \
46
+ apt-get install -y gcc-multilib \
47
+ && curl -Lo go.tar.gz https://dl.google.com/go/go1.22.0.linux-amd64.tar.gz \
48
+ && tar -C /usr/local -xzf go.tar.gz \
49
+ && rm go.tar.gz \
50
+ && git clone https://github.com/volatilityfoundation/dwarf2json.git \
51
+ && cd dwarf2json \
52
+ && CC=gcc /usr/local/go/bin/go build; \
53
+ elif [ "$TARGETARCH" = "arm64" ]; then \
54
+ apt-get install -y gcc-aarch64-linux-gnu \
55
+ && curl -Lo go.tar.gz https://dl.google.com/go/go1.22.0.linux-arm64.tar.gz \
56
+ && tar -C /usr/local -xzf go.tar.gz \
57
+ && rm go.tar.gz \
58
+ && git clone https://github.com/volatilityfoundation/dwarf2json.git \
59
+ && cd dwarf2json \
60
+ && CC=aarch64-linux-gnu-gcc /usr/local/go/bin/go build; \
61
+ else \
62
+ echo "Unsupported platform: $TARGETARCH" && exit 1; \
63
+ fi
43
64
44
65
FROM common-base
45
66
WORKDIR /
46
67
COPY ./requirements /requirements
47
- RUN pip install uv==0.2.31 -e git+https://github.com/dadokkio /volatility3.git@f740146f692ba288f376a939b24b1c1a8f7cf5e2 #egg=volatility3 \
68
+ RUN pip install uv==0.1.21 -e git+https://github.com/volatilityfoundation /volatility3.git@55dd39f2ba60ffdd2126b7ea011940f0df42815a #egg=volatility3 \
48
69
&& uv pip install --no-cache --system -r /requirements/base.txt
49
70
50
71
COPY ./compose/local/__init__.py /src/volatility3/volatility3/framework/constants/__init__.py
@@ -64,5 +85,9 @@ RUN chmod +x /start
64
85
65
86
COPY --from=go-builder /dwarf2json/dwarf2json /dwarf2json/dwarf2json
66
87
88
+ COPY --from=yara-builder /tmp/yara-python/ /tmp/
89
+ WORKDIR /tmp
90
+ RUN python setup.py install
91
+
67
92
WORKDIR /app
68
93
ENTRYPOINT ["/entrypoint" ]
0 commit comments