#!/usr/bin/env bash # Install docker + docker-compose CLI and verify socket access (Jenkins on Coolify). set -euo pipefail mkdir -p .ci-bin dist .ci-bin/docker-config/cli-plugins if [ ! -x .ci-bin/docker ]; then echo "Downloading docker CLI..." curl -fsSL "https://download.docker.com/linux/static/stable/x86_64/docker-27.4.1.tgz" \ | tar xz --strip-components=1 -C .ci-bin docker/docker chmod +x .ci-bin/docker fi if [ ! -x .ci-bin/docker-compose ]; then echo "Downloading docker-compose..." curl -fsSL "https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-linux-x86_64" \ -o .ci-bin/docker-compose chmod +x .ci-bin/docker-compose fi if [ ! -x .ci-bin/docker-config/cli-plugins/docker-buildx ]; then echo "Downloading docker buildx plugin..." curl -fsSL "https://github.com/docker/buildx/releases/download/v0.21.1/buildx-v0.21.1.linux-amd64" \ -o .ci-bin/docker-config/cli-plugins/docker-buildx chmod +x .ci-bin/docker-config/cli-plugins/docker-buildx fi DOCKER=./.ci-bin/docker COMPOSE=./.ci-bin/docker-compose DOCKER_CONFIG="${PWD}/.ci-bin/docker-config" export DOCKER_CONFIG if ! $DOCKER version >/dev/null 2>&1; then if command -v sudo >/dev/null 2>&1 && sudo -n env DOCKER_CONFIG="$DOCKER_CONFIG" $DOCKER version >/dev/null 2>&1; then DOCKER="sudo env DOCKER_CONFIG=$DOCKER_CONFIG $DOCKER" COMPOSE="sudo $COMPOSE" else echo "ERROR: cannot access /var/run/docker.sock" echo "Set DOCKER_GID on the Jenkins Coolify service to: $(stat -c '%g' /var/run/docker.sock 2>/dev/null || echo unknown)" ls -la /var/run/docker.sock 2>/dev/null || true id exit 1 fi fi cat > .ci-bin/ci-env.sh <