yao/sandbox/docker/claude/Dockerfile

42 lines
1.2 KiB
Docker

# Claude sandbox image: Claude CLI + Node.js + Python
# Supports both amd64 and arm64 architectures
ARG REGISTRY=yaoapp
FROM ${REGISTRY}/sandbox-base:latest
USER root
# Node.js 20 (automatically detects architecture)
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# Python 3.11
RUN apt-get update && apt-get install -y \
python3.11 \
python3-pip \
python3-venv \
&& rm -rf /var/lib/apt/lists/* \
&& ln -sf /usr/bin/python3.11 /usr/bin/python3 \
&& ln -sf /usr/bin/python3 /usr/bin/python
# Claude CLI installation
# Using npm to install @anthropic-ai/claude-code globally
RUN npm install -g @anthropic-ai/claude-code || \
echo "Claude CLI installation skipped (may not be available yet)"
# npm global packages directory for sandbox user
RUN mkdir -p /home/sandbox/.npm-global && \
chown -R sandbox:sandbox /home/sandbox/.npm-global
USER sandbox
# Configure npm to use user directory
RUN npm config set prefix '/home/sandbox/.npm-global'
ENV PATH="/home/sandbox/.npm-global/bin:${PATH}"
# Verify installations
RUN node --version && npm --version && python3 --version
WORKDIR /workspace
CMD ["sleep", "infinity"]