You are viewing a plain text version of this content. The canonical link for it is here.
Posted to geb-notifications@groovy.apache.org by jo...@apache.org on 2026/04/10 18:53:55 UTC
(groovy-geb) 13/31: fix container networking.
This is an automated email from the ASF dual-hosted git repository.
jonnybot pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy-geb.git
commit 0903232b07474d215e0af13b28ea4aa952c521ba
Author: Carl Marcum <ca...@codebuilders.net>
AuthorDate: Sun Feb 22 17:53:23 2026 -0500
fix container networking.
---
Dockerfile | 12 ++------
build-in-docker.sh | 10 +++++--
docker-entrypoint.sh | 33 +++++++---------------
.../plugin/geb/WebDriverContainerHolder.groovy | 9 +++++-
4 files changed, 28 insertions(+), 36 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 338318c9..7208b92c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -39,19 +39,10 @@ RUN apt-get update && \
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
+RUN useradd -u 1001 -m circleci
WORKDIR /home/circleci
@@ -66,6 +57,7 @@ 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
+ENV CI=true
# Create an entrypoint script
COPY --chmod=755 docker-entrypoint.sh /docker-entrypoint.sh
diff --git a/build-in-docker.sh b/build-in-docker.sh
index 2b973c4b..1cbcb597 100755
--- a/build-in-docker.sh
+++ b/build-in-docker.sh
@@ -25,9 +25,15 @@ export IMAGE="geb-build:latest"
# Remove existing container if it exists
docker rm -f geb-build-container 2>/dev/null || true
-docker run --privileged \
- -it \
+# For podman on macOS, we need to use --privileged and --security-opt to access the host's podman socket
+# The socket will be available via podman's automatic socket forwarding
+# Use --network=host so testcontainers can access other containers via localhost
+docker run -it \
--name geb-build-container \
+ --privileged \
+ --network=host \
+ --security-opt label=disable \
+ -v /var/run/docker.sock:/var/run/docker.sock:Z \
-v ${WORKING_DIRECTORY}:${WORKING_DIRECTORY} \
-v ${HOME_DIRECTORY}/.gradle:/gradle-home \
-w ${WORKING_DIRECTORY} \
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
index 75095bff..4d45b015 100644
--- a/docker-entrypoint.sh
+++ b/docker-entrypoint.sh
@@ -18,33 +18,20 @@
# under the License.
# ----------------------------------------------------------------------------
-# Start Docker daemon in the background (as root)
-dockerd > /tmp/dockerd.log 2>&1 &
-
-# 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
-
-if [ $timeout -eq 0 ]; then
- echo "Docker daemon failed to start within 30 seconds"
- cat /tmp/dockerd.log
+# Check if Docker/Podman is available via the mounted socket
+if [ -S /var/run/docker.sock ]; then
+ echo "Docker socket found at /var/run/docker.sock"
+else
+ echo "ERROR: Docker socket not found at /var/run/docker.sock"
+ echo "Make sure the host Docker/Podman socket is mounted"
exit 1
fi
+# Fix socket permissions to allow circleci user access
+chmod 666 /var/run/docker.sock 2>/dev/null || true
+
# Start Xvfb for headless browser testing
Xvfb :99 -screen 1 1280x1024x16 -nolisten tcp > /dev/null 2>&1 &
-# Fix docker socket permissions
-chown root:docker /var/run/docker.sock
-chmod 660 /var/run/docker.sock
-
-# Execute the command as the circleci user
+# Drop to circleci user
exec gosu circleci "$@"
\ No newline at end of file
diff --git a/integration/geb-testcontainers/src/main/groovy/grails/plugin/geb/WebDriverContainerHolder.groovy b/integration/geb-testcontainers/src/main/groovy/grails/plugin/geb/WebDriverContainerHolder.groovy
index bab7e1d4..0aad65fa 100644
--- a/integration/geb-testcontainers/src/main/groovy/grails/plugin/geb/WebDriverContainerHolder.groovy
+++ b/integration/geb-testcontainers/src/main/groovy/grails/plugin/geb/WebDriverContainerHolder.groovy
@@ -152,7 +152,14 @@ class WebDriverContainerHolder {
container.with {
withEnv('SE_ENABLE_TRACING', settings.tracingEnabled.toString())
- withAccessToHost(true)
+ // Disable withAccessToHost when running in a container (CI environment)
+ // as SSH port forwarding doesn't work well in container-in-container setups
+ if (!System.getenv('CI')) {
+ withAccessToHost(true)
+ } else {
+ // Increase startup timeout for CI environments (container-in-container is slower)
+ withStartupTimeout(Duration.of(2, ChronoUnit.MINUTES))
+ }
withImagePullPolicy(PullPolicy.ageBased(Duration.of(1, ChronoUnit.DAYS)))
// start() // without Capabilities this is starting chrome
}