Skip to content

Commit 8d3a5fb

Browse files
arielmorelliariel.morelli
authored andcommitted
docker: use docker buildx to build multi architecture
1 parent 4a0382c commit 8d3a5fb

3 files changed

Lines changed: 59 additions & 44 deletions

File tree

Dockerfile

Lines changed: 48 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,44 @@
33
# Copyright (C) 2020 Olliver Schinagl <[email protected]>
44
# Copyright (C) 2021-2022 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
55

6-
# hadolint ignore=DL3007 latest is the latest stable for alpine
7-
FROM index.docker.io/library/alpine:latest AS builder
6+
FROM index.docker.io/library/rust:1.62.1-bullseye AS builder
87

98
WORKDIR /src
109

1110
COPY . /src/
1211

13-
# hadolint ignore=DL3008 We want the latest stable versions
14-
RUN apk add --no-cache \
15-
bsd-compat-headers \
16-
bzip2-dev \
17-
check-dev \
12+
ENV DEBIAN_FRONTEND noninteractive
13+
14+
RUN apt update && apt install -y \
1815
cmake \
19-
curl-dev \
20-
file \
21-
fts-dev \
22-
g++ \
16+
bison \
17+
flex \
18+
gcc \
2319
git \
24-
json-c-dev \
20+
make \
21+
man-db \
22+
net-tools \
23+
pkg-config \
24+
python3 \
25+
python3-pip \
26+
python3-pytest \
27+
check \
28+
libbz2-dev \
29+
libcurl4-openssl-dev \
30+
libjson-c-dev \
2531
libmilter-dev \
26-
libtool \
32+
libncurses5-dev \
33+
libpcre2-dev \
34+
libssl-dev \
2735
libxml2-dev \
28-
linux-headers \
29-
make \
30-
ncurses-dev \
31-
openssl-dev \
32-
pcre2-dev \
33-
py3-pytest \
34-
zlib-dev \
35-
rust \
36-
cargo \
36+
zlib1g-dev \
37+
&& \
38+
rm -rf /var/cache/apt/archives \
39+
&& \
40+
mkdir -p "./build" && cd "./build" \
3741
&& \
38-
mkdir -p "./build" && cd "./build" && \
3942
cmake .. \
43+
-DCARGO_HOME="/src/build" \
4044
-DCMAKE_BUILD_TYPE="Release" \
4145
-DCMAKE_INSTALL_PREFIX="/usr" \
4246
-DCMAKE_INSTALL_LIBDIR="/usr/lib" \
@@ -47,8 +51,10 @@ RUN apk add --no-cache \
4751
-DENABLE_JSON_SHARED=ON \
4852
-DENABLE_MAN_PAGES=OFF \
4953
-DENABLE_MILTER=ON \
50-
-DENABLE_STATIC_LIB=OFF && \
51-
make DESTDIR="/clamav" -j$(($(nproc) - 1)) install && \
54+
-DENABLE_STATIC_LIB=OFF \
55+
&& \
56+
make DESTDIR="/clamav" -j$(($(nproc) - 1)) install \
57+
&& \
5258
rm -r \
5359
"/clamav/usr/include" \
5460
"/clamav/usr/lib/pkgconfig/" \
@@ -77,38 +83,39 @@ RUN apk add --no-cache \
7783
-e "s|^\#\(LogTime\).*|\1 yes|" \
7884
-e "s|.*\(\ClamdSocket\) .*|\1 unix:/run/clamav/clamd.sock|" \
7985
"/clamav/etc/clamav/clamav-milter.conf.sample" > "/clamav/etc/clamav/clamav-milter.conf" || \
80-
exit 1 && \
86+
exit 1 \
87+
&& \
8188
ctest -V
8289

83-
FROM index.docker.io/library/alpine:latest
90+
FROM index.docker.io/library/debian:11-slim
8491

8592
LABEL maintainer="ClamAV bugs <[email protected]>"
8693

8794
EXPOSE 3310
8895
EXPOSE 7357
8996

97+
ENV DEBIAN_FRONTEND=noninteractive
9098
ENV TZ Etc/UTC
9199

92-
RUN apk add --no-cache \
93-
fts \
94-
json-c \
95-
libbz2 \
96-
libcurl \
97-
libltdl \
98-
libmilter \
99-
libstdc++ \
100+
RUN apt-get update && apt-get install -y \
101+
libbz2-1.0 \
102+
libcurl4 \
103+
libssl1.1 \
104+
libjson-c5 \
105+
libmilter1.0.1 \
106+
libncurses5 \
107+
libpcre2-8-0 \
100108
libxml2 \
101-
ncurses-libs \
102-
pcre2 \
103-
tini \
109+
zlib1g \
104110
tzdata \
105-
zlib \
106111
&& \
107-
addgroup -S "clamav" && \
108-
adduser -D -G "clamav" -h "/var/lib/clamav" -s "/bin/false" -S "clamav" && \
112+
rm -rf /var/cache/apt/archives && \
113+
groupadd "clamav" && \
114+
useradd -g clamav -s /bin/false --home-dir /var/lib/clamav -c "Clam Antivirus" clamav && \
109115
install -d -m 755 -g "clamav" -o "clamav" "/var/log/clamav"
110116

111117
COPY --from=builder "/clamav" "/"
118+
112119
COPY "./dockerfiles/clamdcheck.sh" "/usr/local/bin/"
113120
COPY "./dockerfiles/docker-entrypoint.sh" "/init"
114121

dockerfiles/docker-entrypoint.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/sbin/tini /bin/sh
1+
#!/usr/bin/env sh
22
# SPDX-License-Identifier: GPL-2.0-or-later
33
#
44
# Copyright (C) 2021 Olliver Schinagl <[email protected]>
@@ -15,6 +15,7 @@ if [ ! -d "/run/clamav" ]; then
1515
fi
1616

1717
# Assign ownership to the database directory, just in case it is a mounted volume
18+
mkdir -p /var/lib/clamav
1819
chown -R clamav:clamav /var/lib/clamav
1920

2021
# run command if it is not starting with a "-" and is an executable in PATH

dockerfiles/update_db_image.sh

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ set -eu
88

99
DEF_CLAMAV_DOCKER_IMAGE="clamav/clamav"
1010
DEF_DOCKER_REGISTRY="registry.hub.docker.com"
11+
DOCKER_BUILDKIT_IMAGE="multiarch/qemu-user-static"
1112

1213

1314
usage()
@@ -72,6 +73,12 @@ docker_tags_get()
7273
done
7374
}
7475

76+
config_docker_buildx()
77+
{
78+
docker buildx install
79+
docker buildx create --use --name=builder --driver docker-container --driver-opt image=${DOCKER_BUILDKIT_IMAGE} || true
80+
}
81+
7582
clamav_db_update()
7683
{
7784
if [ -z "${clamav_docker_tags:-}" ]; then
@@ -83,8 +90,7 @@ clamav_db_update()
8390
{
8491
echo "FROM ${docker_registry}/${clamav_docker_image}:${_tag}"
8592
echo "RUN freshclam --foreground --stdout && rm /var/lib/clamav/freshclam.dat || rm /var/lib/clamav/mirrors.dat || true"
86-
} | docker image build --pull --rm --tag "${docker_registry}/${clamav_docker_image}:${_tag%%_base}" -
87-
docker image push "${docker_registry}/${clamav_docker_image}:${_tag%%_base}"
93+
} | docker buildx build --platform linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64 --pull --push --rm --tag "${docker_registry}/${clamav_docker_image}:${_tag%%_base}" -
8894
done
8995
}
9096

@@ -132,6 +138,7 @@ main()
132138
docker_registry="${docker_registry:-${DOCKER_REGISTRY:-${DEF_DOCKER_REGISTRY}}}"
133139

134140
init
141+
config_docker_buildx
135142

136143
docker_tags_get
137144
clamav_db_update

0 commit comments

Comments
 (0)