Files
zk-data-agent/docker/workspace.Dockerfile
T
2026-07-26 20:20:37 +08:00

60 lines
2.3 KiB
Docker

FROM node:22-bookworm-slim@sha256:6c74791e557ce11fc957704f6d4fe134a7bc8d6f5ca4403205b2966bd488f6b3 AS node-runtime
FROM python:3.12-slim-bookworm@sha256:d50fb7611f86d04a3b0471b46d7557818d88983fc3136726336b2a4c657aa30b
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get upgrade -y --no-install-recommends \
&& apt-get install -y --no-install-recommends \
bash \
build-essential \
ca-certificates \
curl \
git \
jq \
less \
libatomic1 \
openssh-client \
patch \
ripgrep \
tini \
&& rm -rf /var/lib/apt/lists/*
COPY --from=node-runtime /usr/local/bin/node /usr/local/bin/node
COPY --from=node-runtime /usr/local/include/node /usr/local/include/node
COPY --from=node-runtime /usr/local/lib/node_modules /usr/local/lib/node_modules
RUN ln -s ../lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm \
&& ln -s ../lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx \
&& ln -s ../lib/node_modules/corepack/dist/corepack.js /usr/local/bin/corepack \
&& npm install --global npm@12.0.1 \
&& npm pack --silent brace-expansion@5.0.8 --pack-destination /tmp \
&& rm -rf /usr/local/lib/node_modules/npm/node_modules/brace-expansion \
&& mkdir -p /usr/local/lib/node_modules/npm/node_modules/brace-expansion \
&& tar -xzf /tmp/brace-expansion-5.0.8.tgz \
-C /usr/local/lib/node_modules/npm/node_modules/brace-expansion \
--strip-components=1 \
&& rm /tmp/brace-expansion-5.0.8.tgz \
&& npm cache clean --force \
&& node --version \
&& npm --version
RUN python -m pip install --no-cache-dir --upgrade pip==26.1.2
RUN groupadd --gid 1000 agent \
&& useradd --uid 1000 --gid 1000 --create-home --shell /bin/bash agent \
&& mkdir -p /workspace \
&& chown 1000:1000 /workspace
ENV HOME=/workspace/.agent/home \
XDG_CACHE_HOME=/workspace/.agent/cache \
PIP_CACHE_DIR=/workspace/.agent/cache/pip \
PYTHONUSERBASE=/workspace/.agent/home/.local \
NPM_CONFIG_CACHE=/workspace/.agent/cache/npm \
NPM_CONFIG_PREFIX=/workspace/.agent/npm \
PATH=/workspace/.venv/bin:/workspace/.agent/home/.local/bin:/workspace/.agent/npm/bin:${PATH}
WORKDIR /workspace
USER 1000:1000
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["sleep", "infinity"]