@@ -23,24 +23,46 @@ LABEL org.opencontainers.image.source=https://github.com/${GITHUB_REPO}
2323# manual interaction.
2424ARG DEBIAN_FRONTEND=noninteractive
2525RUN apt update && apt upgrade -y
26- RUN set -ex ;\
27- ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime ;\
28- apt install -y tzdata ;\
29- dpkg-reconfigure --frontend noninteractive tzdata
26+ RUN <<EOF
27+ set -ex
28+ ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
29+ apt install -y tzdata
30+ dpkg-reconfigure --frontend noninteractive tzdata
31+ EOF
3032
3133# Install tools that are shared by all stages.
3234RUN <<EOF
33- pkgs=()
34- pkgs+=(build-essential) # Required build tools.
35- pkgs+=(ca-certificates) # Enable TLS verification for HTTPS connections by providing trusted root certificates.
36- pkgs+=(cmake) # Required build tool.
37- pkgs+=(curl) # Dependency for tools requiring downloading data.
38- pkgs+=(git) # Required build tool.
39- pkgs+=(gpg) # Dependency for tools requiring signing or encrypting/decrypting.
40- pkgs+=(jq) # Pretty printing.
41- pkgs+=(ninja-build) # Required build tool.
42- pkgs+=(pipx) # Package manager for Python applications.
43- apt install -y "${pkgs[@]}"
35+ pkgs=()
36+ pkgs+=(build-essential) # Required build tools.
37+ pkgs+=(ca-certificates) # Enable TLS verification for HTTPS connections by providing trusted root certificates.
38+ pkgs+=(cmake) # Required build tool.
39+ pkgs+=(curl) # Dependency for tools requiring downloading data.
40+ pkgs+=(git) # Required build tool.
41+ pkgs+=(gpg) # Dependency for tools requiring signing or encrypting/decrypting.
42+ pkgs+=(jq) # Pretty printing.
43+ pkgs+=(ninja-build) # Required build tool.
44+ pkgs+=(pipx) # Package manager for Python applications.
45+ apt install -y "${pkgs[@]}"
46+ EOF
47+
48+ # Install Docker, see https://docs.docker.com/engine/install/debian.
49+ RUN <<EOF
50+ set -ex
51+ install -m 0755 -d /etc/apt/keyrings
52+ curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
53+ chmod a+r /etc/apt/keyrings/docker.asc
54+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
55+ https://download.docker.com/linux/debian \
56+ $(. /etc/os-release && echo " $VERSION_CODENAME") stable" | \
57+ tee /etc/apt/sources.list.d/docker.list > /dev/null
58+ apt update
59+ pkgs=()
60+ pkgs+=(docker-ce)
61+ pkgs+=(docker-ce-cli)
62+ pkgs+=(containerd.io)
63+ pkgs+=(docker-buildx-plugin)
64+ pkgs+=(docker-compose-plugin)
65+ apt install -y "${pkgs[@]}"
4466EOF
4567
4668# Install Conan.
@@ -126,7 +148,7 @@ RUN conan profile detect
126148# Fix the C++ dialect.
127149RUN sed -i -e 's|^compiler\. cppstd=.*$|compiler.cppstd=20|' ~/.conan2/profiles/default
128150# To ensure compatibility with a range of Clang compilers, we must add extra
129- # flags that applies to certain versions of Clang.
151+ # flags that apply to certain versions of Clang.
130152RUN <<EOF
131153if [[ $(clang-${CLANG_VERSION} --version | head -1 | grep -Po 'version \K [0-9]{2}' ) -ge 20 ]]; then
132154 cat >>~/.conan2/profiles/default <<EOT
0 commit comments