diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a13e78c..0e74c4d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,6 +41,8 @@ jobs: DOCKER_IMAGE_TAG: latest - DOCKER_IMAGE_FLAVOR: dind DOCKER_IMAGE_TAG: dind-latest + - DOCKER_IMAGE_FLAVOR: dind-rootless + DOCKER_IMAGE_TAG: dind-rootless-latest fail-fast: true steps: - name: Show environment variables diff --git a/image/Dockerfile b/image/Dockerfile index bc310b6..9307172 100644 --- a/image/Dockerfile +++ b/image/Dockerfile @@ -27,7 +27,7 @@ ARG UPX_COMPRESS=true ARG BASE_LAYER_CACHE_KEY -# dood|dind +# dood|dind|dind-rootless ARG FLAVOR RUN --mount=type=bind,source=.shared,target=/mnt/shared < $HOME/.config/docker/daemon.json + fi + + export container=docker # from dind-hack + export XDG_RUNTIME_DIR=$HOME/.docker/run + mkdir -p $XDG_RUNTIME_DIR + rm -f $XDG_RUNTIME_DIR/docker.pid $XDG_RUNTIME_DIR/docker/containerd/containerd.pid + /usr/bin/dockerd-rootless.sh -p $HOME/.docker/run/docker.pid > "$HOME/.docker/docker.log" 2>&1 & + export DOCKER_PID=$! + while ! docker stats --no-stream &>/dev/null; do + log INFO "Waiting for Docker engine to start..." + sleep 2 + tail -n 1 /data/.docker/docker.log + done + echo "===========================================================" + docker info + echo "===========================================================" +elif [[ -f /usr/bin/dockerd ]]; then export DOCKER_MODE=dind log INFO "Starting Docker engine..." sudo rm -f /var/run/docker.pid /run/docker/containerd/containerd.pid diff --git a/image/run_runner.sh b/image/run_runner.sh index 5c12117..58cccde 100644 --- a/image/run_runner.sh +++ b/image/run_runner.sh @@ -15,18 +15,20 @@ cd /data ################################################################# # ensure act user has read/write access to /var/run/docker.sock ################################################################# -if [[ ! -w /var/run/docker.sock || ! -r /var/run/docker.sock ]]; then - docker_group=$(stat -c '%G' /var/run/docker.sock) - if [[ $docker_group == "UNKNOWN" ]]; then - docker_gid=$(stat -c '%g' /var/run/docker.sock) - docker_group="docker$docker_gid" - log INFO "Creating group [$docker_group]..." - sudo addgroup --gid $docker_gid $docker_group - fi +if [[ $DOCKER_MODE != "dind-rootless" ]]; then + if [[ ! -w /var/run/docker.sock || ! -r /var/run/docker.sock ]]; then + docker_group=$(stat -c '%G' /var/run/docker.sock) + if [[ $docker_group == "UNKNOWN" ]]; then + docker_gid=$(stat -c '%g' /var/run/docker.sock) + docker_group="docker$docker_gid" + log INFO "Creating group [$docker_group]..." + sudo addgroup --gid $docker_gid $docker_group + fi - if ! id -nG act | grep -qw "$docker_group"; then - log INFO "Adding user [act] to docker group [$(getent group $docker_group)]..." - sudo usermod -aG $docker_group act + if ! id -nG act | grep -qw "$docker_group"; then + log INFO "Adding user [act] to docker group [$(getent group $docker_group)]..." + sudo usermod -aG $docker_group act + fi fi fi