This is an automated email from the ASF dual-hosted git repository.

cmarcum pushed a commit to branch task/geb-testcontainers
in repository https://gitbox.apache.org/repos/asf/groovy-geb.git

commit beed13941bca65f5eb605d7f204aec6ca485f10a
Author: Carl Marcum <[email protected]>
AuthorDate: Sun Feb 22 10:07:35 2026 -0500

    add Dockerfile that includes Docker.
    separate docker-entrypoint from build-in-docker.sh and add starting Docker 
daemon.
---
 Dockerfile                                 | 74 ++++++++++++++++++++++++++++++
 build-in-docker.sh                         | 19 +++-----
 build-in-docker.sh => docker-entrypoint.sh | 35 +++++++++-----
 3 files changed, 104 insertions(+), 24 deletions(-)

diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..5baa5cf7
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,74 @@
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# FROM gebish/ci:v13
+FROM eclipse-temurin:11-jdk
+
+RUN wget 
https://launchpad.net/~xtradeb/+archive/ubuntu/apps/+files/xtradeb-apt-source_0.4_all.deb
+RUN dpkg -i xtradeb-apt-source_0.4_all.deb
+RUN rm *.deb
+
+RUN apt-get update && \
+    apt-get install -y \
+    git \
+    xvfb \
+    curl \
+    bzip2 \
+    libgtk-3-dev \
+    libdbus-glib-1-2 \
+    wget \
+    gnupg \
+    firefox \
+    firefox-geckodriver \
+    chromium \
+    chromium-driver \
+    ca-certificates \
+    curl \
+    gnupg \
+    lsb-release \
+    gosu && \
+    mkdir -p /etc/apt/keyrings && \
+    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o 
/etc/apt/keyrings/docker.gpg && \
+    echo "deb [arch=$(dpkg --print-architecture) 
signed-by=/etc/apt/keyrings/docker.gpg] 
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee 
/etc/apt/sources.list.d/docker.list > /dev/null && \
+    apt-get update && \
+    apt-get install -y docker-ce docker-ce-cli containerd.io 
docker-compose-plugin && \
+    apt-get clean
+
+RUN useradd -u 1001 -m circleci && \
+    usermod -aG docker circleci
+
+WORKDIR /home/circleci
+
+ENV LANG=C.UTF-8
+ENV LC_ALL=C.UTF-8
+
+# Set up Xvfb to start automatically
+ENV DISPLAY=:99
+
+# Configure Testcontainers to use the Docker daemon
+ENV DOCKER_HOST=unix:///var/run/docker.sock
+ENV TESTCONTAINERS_RYUK_DISABLED=true
+ENV TESTCONTAINERS_CHECKS_DISABLE=true
+ENV TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
+
+# Create an entrypoint script
+COPY --chmod=755 docker-entrypoint.sh /docker-entrypoint.sh
+
+ENTRYPOINT ["/docker-entrypoint.sh"]
+CMD ["/bin/bash"]
diff --git a/build-in-docker.sh b/build-in-docker.sh
index 7d4f7af1..ff1848a0 100755
--- a/build-in-docker.sh
+++ b/build-in-docker.sh
@@ -20,16 +20,11 @@
 
 export WORKING_DIRECTORY=`pwd`
 export HOME_DIRECTORY=`echo ~`
-export IMAGE_REPOSITORY="gebish/ci"
-export IMAGE_TAG="v13"
+export IMAGE="geb-build:latest"
 
-while getopts v: flag
-do
-    case "${flag}" in
-        v) VERSION=${OPTARG};;
-    esac
-done
-
-export IMAGE="${IMAGE_REPOSITORY}:${IMAGE_TAG}"
-
-docker run -v ${WORKING_DIRECTORY}:${WORKING_DIRECTORY} -v 
${HOME_DIRECTORY}/.gradle:/gradle-home -w ${WORKING_DIRECTORY} ${IMAGE} 
/bin/bash -c "Xvfb :99 -screen 1 1280x1024x16 -nolisten tcp > /dev/null 2>&1 & 
export DISPLAY=:99 ; ./gradlew --no-daemon --max-workers 4 --parallel $*"
\ No newline at end of file
+docker run --privileged \
+           -v ${WORKING_DIRECTORY}:${WORKING_DIRECTORY} \
+           -v ${HOME_DIRECTORY}/.gradle:/gradle-home \
+           -w ${WORKING_DIRECTORY} \
+           ${IMAGE} \
+           ./gradlew --no-daemon --max-workers 4 --parallel "$@"
\ No newline at end of file
diff --git a/build-in-docker.sh b/docker-entrypoint.sh
old mode 100755
new mode 100644
similarity index 59%
copy from build-in-docker.sh
copy to docker-entrypoint.sh
index 7d4f7af1..0ef2a51a
--- a/build-in-docker.sh
+++ b/docker-entrypoint.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/bash
 # ----------------------------------------------------------------------------
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
@@ -18,18 +18,29 @@
 # under the License.
 # ----------------------------------------------------------------------------
 
-export WORKING_DIRECTORY=`pwd`
-export HOME_DIRECTORY=`echo ~`
-export IMAGE_REPOSITORY="gebish/ci"
-export IMAGE_TAG="v13"
+# Start Docker daemon in the background (as root)
+dockerd > /tmp/dockerd.log 2>&1 &
 
-while getopts v: flag
-do
-    case "${flag}" in
-        v) VERSION=${OPTARG};;
-    esac
+# Wait for Docker to be ready
+echo "Waiting for Docker daemon to start..."
+timeout=30
+while [ $timeout -gt 0 ]; do
+    if docker info > /dev/null 2>&1; then
+        echo "Docker daemon is ready"
+        break
+    fi
+    sleep 1
+    timeout=$((timeout-1))
 done
 
-export IMAGE="${IMAGE_REPOSITORY}:${IMAGE_TAG}"
+if [ $timeout -eq 0 ]; then
+    echo "Docker daemon failed to start within 30 seconds"
+    cat /tmp/dockerd.log
+    exit 1
+fi
 
-docker run -v ${WORKING_DIRECTORY}:${WORKING_DIRECTORY} -v 
${HOME_DIRECTORY}/.gradle:/gradle-home -w ${WORKING_DIRECTORY} ${IMAGE} 
/bin/bash -c "Xvfb :99 -screen 1 1280x1024x16 -nolisten tcp > /dev/null 2>&1 & 
export DISPLAY=:99 ; ./gradlew --no-daemon --max-workers 4 --parallel $*"
\ No newline at end of file
+# Start Xvfb for headless browser testing
+Xvfb :99 -screen 1 1280x1024x16 -nolisten tcp > /dev/null 2>&1 &
+
+# Execute the command as the circleci user
+exec gosu circleci "$@"
\ No newline at end of file

Reply via email to