-FROM alpine:3.11
+ARG BASE_IMAGE=alpine:3.11
+FROM ${BASE_IMAGE} AS build
RUN apk add --no-cache \
bash \
-FROM alpine:3.15
+ARG BASE_IMAGE=alpine:3.15
+FROM ${BASE_IMAGE} AS build
RUN apk add --no-cache \
bash \
-FROM debian:11
+ARG BASE_IMAGE=debian:11
+FROM ${BASE_IMAGE} AS build
+ARG GCC_APT="gcc-multilib"
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
bash \
clang \
cmake \
elfutils \
- gcc-multilib \
+ ${GCC_APT} \
libhiredis-dev \
libzstd-dev \
python3 \
--- /dev/null
+ARG BASE_IMAGE=debian:12
+FROM ${BASE_IMAGE} AS build
+
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends \
+ bash \
+ build-essential \
+ ccache \
+ clang \
+ cmake \
+ elfutils \
+ gcc \
+ libhiredis-dev \
+ libzstd-dev \
+ python3 \
+ redis-server \
+ redis-tools \
+ && rm -rf /var/lib/apt/lists/*
+
+# Redirect all compilers to ccache.
+RUN for t in gcc g++ cc c++ clang clang++; do ln -vs /usr/bin/ccache /usr/local/bin/$t; done
-FROM fedora:36
+ARG BASE_IMAGE=fedora:36
+FROM ${BASE_IMAGE} AS build
RUN dnf install -y \
autoconf \
findutils \
gcc \
gcc-c++ \
+ libstdc++-static \
hiredis-devel \
libzstd-devel \
make \
-FROM fedora:40
+ARG BASE_IMAGE=fedora:40
+FROM ${BASE_IMAGE} AS build
RUN dnf install -y \
blake3-devel \
fmt-devel \
gcc \
gcc-c++ \
+ libstdc++-static \
hiredis-devel \
less \
libzstd-devel \
-FROM ubuntu:20.04
+ARG BASE_IMAGE=ubuntu:20.04
+FROM ${BASE_IMAGE} AS build
# Non-interactive: do not set up timezone settings.
+ARG GCC_APT="gcc-multilib"
RUN apt-get update \
&& DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
asciidoctor \
docbook-xml \
docbook-xsl \
elfutils \
- gcc-multilib \
+ ${GCC_APT} \
libhiredis-dev \
libzstd-dev \
python3 \
-FROM ubuntu:22.04
+ARG BASE_IMAGE=ubuntu:22.04
+FROM ${BASE_IMAGE} AS build
# Non-interactive: do not set up timezone settings.
+ARG GCC_APT="gcc-multilib"
RUN apt-get update \
&& DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
asciidoctor \
docbook-xml \
docbook-xsl \
elfutils \
- gcc-multilib \
+ ${GCC_APT} \
gcc-12 \
g++-12 \
libhiredis-dev \
-FROM ubuntu:24.04
+ARG BASE_IMAGE=ubuntu:24.04
+FROM ${BASE_IMAGE} AS build
# Non-interactive: do not set up timezone settings.
+ARG GCC_APT="gcc-multilib"
RUN apt-get update \
&& DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
asciidoctor \
docbook-xml \
docbook-xsl \
elfutils \
- gcc-multilib \
+ ${GCC_APT} \
g++-13 \
g++-14 \
libhiredis-dev \