FROM --platform=linux/amd64 ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive ENV PLAYWRIGHT_BROWSERS_PATH=/opt/ms-playwright ENV PATH=/usr/local/go/bin:/usr/local/lib/nodejs/node-v26.10.0-linux-x64/bin:${PATH} RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ git \ libatomic1 \ make \ openssh-server \ sudo \ xz-utils \ software-properties-common \ && add-apt-repository -y ppa:deadsnakes/ppa \ && apt-get update \ && apt-get install -y --no-install-recommends \ python3.14 \ python3.14-venv \ && python3.14 -m ensurepip --upgrade \ && ln -sf /usr/bin/python3.14 /usr/local/bin/python3 \ && ln -sf /usr/bin/python3.14 /usr/local/bin/python \ && rm -rf /var/lib/apt/lists/* RUN curl -fsSL https://go.dev/dl/go1.27.1.linux-amd64.tar.gz -o /tmp/go1.27.1.linux-amd64.tar.gz \ && rm -rf /usr/local/go \ && tar -C /usr/local -xzf /tmp/go1.27.1.linux-amd64.tar.gz \ && curl -fsSL https://nodejs.org/dist/v26.10.0/node-v26.10.0-linux-x64.tar.xz -o /tmp/node-v26.10.0-linux-x64.tar.xz \ && mkdir -p /usr/local/lib/nodejs \ && tar -C /usr/local/lib/nodejs -xJf /tmp/node-v26.10.0-linux-x64.tar.xz \ && npx -y playwright@1.64.0 install --with-deps chromium \ && rm -f /tmp/go1.27.1.linux-amd64.tar.gz /tmp/node-v26.10.0-linux-x64.tar.xz \ && rm -rf /var/lib/apt/lists/* RUN userdel -r ubuntu 2>/dev/null || true \ && groupdel ubuntu 2>/dev/null || true \ && groupadd --gid 1000 dev \ && useradd --uid 1000 --gid 1000 --create-home --shell /bin/bash dev \ && echo "dev ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/dev \ && chmod 0440 /etc/sudoers.d/dev \ && printf '\nPermitRootLogin no\nPasswordAuthentication no\nPubkeyAuthentication yes\n' >> /etc/ssh/sshd_config COPY --chmod=755 entrypoint.sh /usr/local/bin/entrypoint.sh COPY --chmod=755 verify-env.sh /usr/local/bin/verify-env.sh EXPOSE 22 ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]