From 410f74425ca10ee3c164df9d19ecc78f21ecbda3 Mon Sep 17 00:00:00 2001 From: Pavel Sviderski Date: Wed, 27 Nov 2024 10:35:49 +1000 Subject: [PATCH] update dind machine image to run dockerd in background --- .dockerignore | 1 + Dockerfile | 17 ++++++++++++++--- scripts/docker-entrypoint.sh | 6 ++++++ 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100755 scripts/docker-entrypoint.sh diff --git a/.dockerignore b/.dockerignore index adeb9419..179dd82a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,6 +4,7 @@ # Allow files and directories. !cmd/ !internal/ +!scripts/docker-entrypoint.sh !go.* # Ignore unnecessary files inside allowed directories. diff --git a/Dockerfile b/Dockerfile index 574b7f13..e88a9379 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,13 @@ FROM golang:1.23.2-alpine AS uncloudd ARG TARGETOS ARG TARGETARCH +ENV CGO_ENABLED=0 + +WORKDIR /build +# Download and cache dependencies and only redownload them in subsequent builds if they change. +COPY go.mod go.sum ./ +RUN go mod download && go mod verify + COPY . . RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o uncloudd cmd/uncloudd/main.go @@ -15,15 +22,19 @@ RUN wget -q -O /tmp/corrosion.tar.gz \ && rm /tmp/corrosion.tar.gz /tmp/corrosion FROM chainguard/wolfi-base:latest AS corrosion -# TODO: create uncloud user COPY --from=corrosion-download /usr/local/bin/corrosion /usr/local/bin/corrosion +CMD ["corrosion", "agent"] -FROM docker:27.3.1-dind +FROM docker:27.3.1-dind AS machine RUN apk --no-cache add \ wireguard-tools # Create system group and user 'uncloud'. RUN addgroup -S uncloud && adduser -SHD -h /nonexistent -G uncloud -g "" uncloud -COPY --from=uncloudd /go/uncloudd /usr/local/bin/uncloudd + +COPY scripts/docker-entrypoint.sh /usr/local/bin/ +COPY --from=uncloudd /build/uncloudd /usr/local/bin/ # TODO: socat to forward uncloud.sock unix socket? + +ENTRYPOINT ["docker-entrypoint.sh"] CMD ["uncloudd"] diff --git a/scripts/docker-entrypoint.sh b/scripts/docker-entrypoint.sh new file mode 100755 index 00000000..a1e86d73 --- /dev/null +++ b/scripts/docker-entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -eu + +dind dockerd & + +exec "$@"