51 lines
2.0 KiB
Docker
51 lines
2.0 KiB
Docker
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"]
|