# Custom CI Docker image for Gitea runners # Pre-installs Node.js 24, pnpm 10, uv, and system dependencies # to eliminate setup time in CI workflows FROM ubuntu:24.04 # Prevent interactive prompts during package installation ENV DEBIAN_FRONTEND=noninteractive # Install system dependencies RUN apt-get update && \ apt-get install -y \ postgresql-client \ redis-tools \ openjdk-11-jre-headless \ curl \ ca-certificates \ gnupg \ lsb-release \ git \ ssh \ && rm -rf /var/lib/apt/lists/* # Install Node.js 24 via NodeSource RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \ apt-get install -y nodejs && \ rm -rf /var/lib/apt/lists/* # Enable corepack and install pnpm 10 RUN corepack enable && \ corepack prepare pnpm@10 --activate # Install uv https://docs.astral.sh/uv/guides/integration/docker/#available-images COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ ENV PATH="/root/.cargo/bin:${PATH}" # Verify installations RUN node --version && \ npm --version && \ pnpm --version && \ uv --version && \ pg_isready --version && \ redis-cli --version && \ java -version # Set working directory WORKDIR /workspace