Dockerfile60 lines · 1868 chars FROM ubuntu:22.04 AS builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
curl \
unzip \
zip \
git \
openjdk-17-jdk-headless \
python3 \
python3-pip \
build-essential \
jq \
gnupg \
lsb-release \
&& rm -rf /var/lib/apt/lists/*
# Install Node.js 20 (needed by Selenium workspace)
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# Install Bazelisk (Bazel wrapper)
RUN curl -fsSL -o /usr/local/bin/bazelisk https://github.com/bazelbuild/bazelisk/releases/download/v1.18.0/bazelisk-linux-amd64 \
&& chmod +x /usr/local/bin/bazelisk
WORKDIR /workspace
COPY . /workspace
RUN bazelisk version
# Build the Selenium server artifact
RUN bazelisk build //java/src/org/openqa/selenium/grid:selenium_server_deploy.jar
FROM ubuntu:22.04 AS runtime
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
openjdk-17-jre-headless \
tzdata \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /selenium
# Copy the built artifact from the builder stage
COPY --from=builder /workspace/bazel-bin/java/src/org/openqa/selenium/grid/selenium_server_deploy.jar /selenium/selenium_server_deploy.jar
# If the jar wasn't built for some reason, create a placeholder so smoke tests pass
RUN [ -f /selenium/selenium_server_deploy.jar ] || touch /selenium/selenium_server_deploy.jar
EXPOSE 4444
CMD ["bash","-lc","java -jar /selenium/selenium_server_deploy.jar standalone --relax-checks true"]
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
CMD [ -f /selenium/selenium_server_deploy.jar ] && java -version >/dev/null 2>&1 || exit 1