Modernized build tooling
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
# Development container for Python 3.13 Boilerplate project with Claude Code + MCP servers
|
||||
FROM python:3.13-slim
|
||||
|
||||
# Install system dependencies
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
# Essential build tools
|
||||
build-essential \
|
||||
gcc \
|
||||
g++ \
|
||||
make \
|
||||
# Development utilities
|
||||
curl \
|
||||
wget \
|
||||
git \
|
||||
vim \
|
||||
nano \
|
||||
jq \
|
||||
tree \
|
||||
htop \
|
||||
unzip \
|
||||
ca-certificates \
|
||||
# Shell enhancements
|
||||
zsh \
|
||||
# Networking tools
|
||||
net-tools \
|
||||
iputils-ping \
|
||||
# Process management
|
||||
procps \
|
||||
# For MCP servers
|
||||
gnupg \
|
||||
lsb-release \
|
||||
software-properties-common \
|
||||
# Clean up
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install Node.js 20 (required for many MCP servers)
|
||||
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
|
||||
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y nodejs \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install Go 1.22+ (for building Forgejo MCP if needed)
|
||||
RUN curl -fsSL https://go.dev/dl/go1.22.10.linux-amd64.tar.gz | tar -xzC /usr/local \
|
||||
&& ln -s /usr/local/go/bin/go /usr/local/bin/go \
|
||||
&& ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt
|
||||
|
||||
# Install Claude Code CLI
|
||||
RUN curl -fsSL https://raw.githubusercontent.com/anthropics/claude-code/main/install.sh | sh
|
||||
|
||||
# Install uv package manager
|
||||
RUN pip install --no-cache-dir uv>=0.8.0
|
||||
|
||||
# Install development tools globally
|
||||
RUN pip install --no-cache-dir \
|
||||
ruff>=0.4.0 \
|
||||
pyright>=1.1.400 \
|
||||
pre-commit>=3.8.0 \
|
||||
nox>=2025.4.22
|
||||
|
||||
# Install MCP servers globally
|
||||
RUN npm install -g \
|
||||
test-runner-mcp \
|
||||
@crunchloop/mcp-devcontainers \
|
||||
kubernetes-mcp-server \
|
||||
@opentofu/opentofu-mcp-server
|
||||
|
||||
# Install Python-based MCP servers
|
||||
RUN pip install --no-cache-dir \
|
||||
ruff-mcp-server \
|
||||
uvx
|
||||
|
||||
# Install uvx-based MCP servers
|
||||
RUN uvx install uv-mcp
|
||||
|
||||
# Create non-root user
|
||||
RUN groupadd --gid 1000 vscode \
|
||||
&& useradd --uid 1000 --gid vscode --shell /bin/bash --create-home vscode \
|
||||
&& echo "vscode ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Set up user environment
|
||||
USER vscode
|
||||
WORKDIR /workspaces/boilerplate
|
||||
|
||||
# Create directories for MCP server configurations and logs
|
||||
RUN mkdir -p ~/.config/claude-code \
|
||||
&& mkdir -p ~/.local/bin \
|
||||
&& mkdir -p ~/.local/share/mcp-logs
|
||||
|
||||
# Configure git for the user
|
||||
RUN git config --global init.defaultBranch main \
|
||||
&& git config --global pull.rebase false \
|
||||
&& git config --global user.name "Dev Container User" \
|
||||
&& git config --global user.email "dev@example.com"
|
||||
|
||||
# Install Oh My Zsh for better shell experience
|
||||
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
||||
|
||||
# Set default shell to zsh
|
||||
ENV SHELL=/bin/zsh
|
||||
|
||||
# Create workspace directories
|
||||
RUN mkdir -p /workspaces/boilerplate/.venv \
|
||||
&& mkdir -p /tmp/uv-cache \
|
||||
&& chown -R vscode:vscode /workspaces/boilerplate \
|
||||
&& chown -R vscode:vscode /tmp/uv-cache
|
||||
|
||||
# Set environment variables
|
||||
ENV PYTHONPATH=/workspaces/boilerplate/src
|
||||
ENV PYTHONDONTWRITEBYTECODE=1
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
ENV PIP_NO_CACHE_DIR=1
|
||||
ENV UV_CACHE_DIR=/tmp/uv-cache
|
||||
|
||||
# MCP server environment variables
|
||||
ENV PATH=$PATH:/usr/local/go/bin:~/.local/bin
|
||||
ENV NODE_PATH=/usr/local/lib/node_modules
|
||||
ENV MCP_LOG_DIR=/home/vscode/.local/share/mcp-logs
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /workspaces/boilerplate
|
||||
|
||||
# Keep container running
|
||||
CMD ["sleep", "infinity"]
|
||||
Reference in New Issue
Block a user