8383 BIND9_VERSION=1:9.20.23-1~deb13u1 \
8484 # renovate: datasource=repology depName=debian_13/bubblewrap
8585 BW_VERSION=0.11.0-2+deb13u1 \
86+ # renovate: datasource=deb depName=docker-ce
87+ DOCKER_CE_VERSION=5:29.5.3-1~debian.13~trixie \
88+ # renovate: datasource=deb depName=containerd.io
89+ CONTAINERD_IO_VERSION=2.2.4-1~debian.13~trixie \
90+ # renovate: datasource=deb depName=docker-buildx-plugin
91+ DOCKER_BUILDX_PLUGIN_VERSION=0.34.1-1~debian.13~trixie \
92+ # renovate: datasource=deb depName=docker-compose-plugin
93+ DOCKER_COMPOSE_PLUGIN_VERSION=5.1.4-1~debian.13~trixie \
8694 # renovate: datasource=repology depName=debian_13/fzf
8795 FZF_VERSION=0.60.3-1+b2 \
8896 # renovate: datasource=repology depName=debian_13/gh
@@ -140,6 +148,17 @@ SHELL ["/bin/bash", "-o", "pipefail", "-ex", "-c"]
140148RUN --mount=type=cache,id=apt-cache-${TARGETARCH},sharing=locked,target=/var/cache/apt \
141149 BC_VERSION_HACK="${BC_VERSION}$([ " ${TARGETARCH}" = " arm64" ] && echo " +b1" || echo "")" && \
142150 rm -f /etc/apt/apt.conf.d/docker-clean && \
151+ install -m 0755 -d /etc/apt/keyrings && \
152+ wget -q -O /etc/apt/keyrings/docker.asc https://download.docker.com/linux/debian/gpg && \
153+ chmod a+r /etc/apt/keyrings/docker.asc && \
154+ printf '%s\n ' \
155+ 'Types: deb' \
156+ 'URIs: https://download.docker.com/linux/debian' \
157+ 'Suites: trixie' \
158+ 'Components: stable' \
159+ "Architectures: $(dpkg --print-architecture)" \
160+ 'Signed-By: /etc/apt/keyrings/docker.asc' \
161+ > /etc/apt/sources.list.d/docker.sources && \
143162 wget -q -O - https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \
144163 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com trixie main" | tee /etc/apt/sources.list.d/hashicorp.list && \
145164 apt-get update && \
@@ -149,6 +168,11 @@ RUN --mount=type=cache,id=apt-cache-${TARGETARCH},sharing=locked,target=/var/cac
149168 bind9-dnsutils="${BIND9_VERSION}" \
150169 bubblewrap="${BW_VERSION}" \
151170 composer="${COMPOSER_VERSION}" \
171+ containerd.io="${CONTAINERD_IO_VERSION}" \
172+ docker-buildx-plugin="${DOCKER_BUILDX_PLUGIN_VERSION}" \
173+ docker-ce="${DOCKER_CE_VERSION}" \
174+ docker-ce-cli="${DOCKER_CE_VERSION}" \
175+ docker-compose-plugin="${DOCKER_COMPOSE_PLUGIN_VERSION}" \
152176 fzf="${FZF_VERSION}" \
153177 gh="${GH_VERSION}" \
154178 git="${GIT_VERSION}" \
@@ -180,6 +204,12 @@ RUN --mount=type=cache,id=apt-cache-${TARGETARCH},sharing=locked,target=/var/cac
180204 unzip="${UNZIP_VERSION}" \
181205 vim="${VIM_VERSION}" \
182206 terraform="${TERRAFORM_VERSION}" && \
207+ apt-mark hold \
208+ containerd.io \
209+ docker-buildx-plugin \
210+ docker-ce \
211+ docker-ce-cli \
212+ docker-compose-plugin && \
183213 rm -rf /var/lib/apt/lists/*
184214
185215COPY download.sh /usr/local/bin
@@ -209,10 +239,19 @@ COPY --from=go-tools-builder /root/go/bin/buf /usr/local/bin/
209239SHELL ["/bin/bash" , "-o" , "pipefail" , "-c" ]
210240
211241COPY --chown=node init-firewall.sh /usr/local/bin/
212- RUN chmod +x /usr/local/bin/init-firewall.sh && \
213- echo "node ALL=(root) NOPASSWD: /usr/local/bin/init-firewall.sh" > /etc/sudoers.d/node-firewall && \
242+ COPY --chown=node fix-docker-socket.sh /usr/local/bin/
243+ RUN chmod +x /usr/local/bin/init-firewall.sh /usr/local/bin/fix-docker-socket.sh && \
244+ printf '%s\n ' \
245+ 'node ALL=(root) NOPASSWD: /usr/local/bin/init-firewall.sh' \
246+ 'node ALL=(root) NOPASSWD: /usr/local/bin/fix-docker-socket.sh' \
247+ > /etc/sudoers.d/node-firewall && \
214248 chmod 0440 /etc/sudoers.d/node-firewall
215249
250+ # Add node to the docker group (the docker-ce postinst created it).
251+ # usermod/gpasswd aren't installed, so edit /etc/group directly:
252+ # add a comma separator only if the member list is non-empty, then append node.
253+ RUN sed -i -E '/^docker:/{ /:$/! s/$/,/; s/$/node/ }' /etc/group
254+
216255USER node
217256
218257ENV \
0 commit comments