initial: team agent workstation for 6-repo matrix
- Dockerfile (Node/Python/Go/Bun + claude-code + gh cli)
- docker-compose.yml (flexible REPOS_DIR, 7 mounts, 6 cache volumes)
- CLAUDE.md (team conventions + red lines + per-repo build/test cmds)
- .claude/settings.json (allow/deny permissions)
- Makefile + scripts/{enter,bootstrap,run-task}.sh
- README.md (onboarding guide)
This commit is contained in:
+52
@@ -0,0 +1,52 @@
|
||||
FROM node:22-bookworm
|
||||
|
||||
ARG TARGETARCH
|
||||
ARG GO_VERSION=1.25.0
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive \
|
||||
PATH=/usr/local/go/bin:/root/go/bin:/root/.bun/bin:/root/.local/bin:$PATH \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
PIP_NO_CACHE_DIR=off \
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=on
|
||||
|
||||
# 换成清华 Debian 镜像(国内网络更稳)+ apt 重试策略
|
||||
RUN sed -i 's|http://deb.debian.org|https://mirrors.tuna.tsinghua.edu.cn|g; s|http://security.debian.org|https://mirrors.tuna.tsinghua.edu.cn/debian-security|g' /etc/apt/sources.list.d/debian.sources \
|
||||
&& echo 'Acquire::Retries "8";' > /etc/apt/apt.conf.d/80-retries \
|
||||
&& echo 'Acquire::http::Timeout "60";' >> /etc/apt/apt.conf.d/80-retries \
|
||||
&& echo 'Acquire::https::Timeout "60";' >> /etc/apt/apt.conf.d/80-retries
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends --fix-missing \
|
||||
git curl ca-certificates gnupg lsb-release \
|
||||
make build-essential \
|
||||
python3 python3-pip python3-venv python3-dev \
|
||||
postgresql-client redis-tools \
|
||||
jq ripgrep fd-find less vim-tiny tini \
|
||||
&& ln -s /usr/bin/fdfind /usr/local/bin/fd \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-${TARGETARCH}.tar.gz" \
|
||||
| tar -C /usr/local -xz
|
||||
|
||||
RUN curl -fsSL https://bun.sh/install | bash
|
||||
|
||||
RUN npm install -g pnpm@latest @anthropic-ai/claude-code
|
||||
|
||||
RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \
|
||||
| dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
|
||||
&& chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
|
||||
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \
|
||||
> /etc/apt/sources.list.d/github-cli.list \
|
||||
&& apt-get update && apt-get install -y --no-install-recommends gh \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN pip install --break-system-packages --no-cache-dir \
|
||||
uv ruff black pytest pytest-asyncio httpx
|
||||
|
||||
RUN git config --system --add safe.directory '*' \
|
||||
&& git config --system pull.rebase false \
|
||||
&& git config --system init.defaultBranch main
|
||||
|
||||
WORKDIR /workspace
|
||||
|
||||
ENTRYPOINT ["/usr/bin/tini", "--"]
|
||||
CMD ["claude"]
|
||||
Reference in New Issue
Block a user