Docker container for Claude Code to work on this folder if needed
This commit is contained in:
parent
b72a2fd707
commit
0e7366ecd6
1 changed files with 119 additions and 0 deletions
119
Dockerfile
Normal file
119
Dockerfile
Normal file
|
|
@ -0,0 +1,119 @@
|
||||||
|
# =============================================================================
|
||||||
|
# UC Salary Analysis — Dev Container
|
||||||
|
# =============================================================================
|
||||||
|
# This container lets you run Claude Code in a Docker container so it can't
|
||||||
|
# access your file system. It also helps set things up for a web tool later,
|
||||||
|
# and has the proper dependencies. Tested on Linux, should work on macOS too.
|
||||||
|
#
|
||||||
|
# Multi-stage build with two named targets:
|
||||||
|
#
|
||||||
|
# claude-code — Claude Code + Python data pipeline tools
|
||||||
|
# for UCOP scraper refactor and classifier work
|
||||||
|
#
|
||||||
|
# webdev — All of the above + Node.js/Vite/React toolchain
|
||||||
|
# for the interactive UC salary visualisation site
|
||||||
|
#
|
||||||
|
# BUILD
|
||||||
|
# docker build --target claude-code -t uc-claude-code .
|
||||||
|
# docker build --target webdev -t uc-webdev .
|
||||||
|
#
|
||||||
|
# RUN (Claude Code)
|
||||||
|
# docker run -it --rm \
|
||||||
|
# -v $(pwd):/workspace \
|
||||||
|
# -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
|
||||||
|
# uc-claude-code
|
||||||
|
#
|
||||||
|
# RUN (web dev, with hot-reload on host port 5173)
|
||||||
|
# docker run -it --rm \
|
||||||
|
# -v $(pwd):/workspace \
|
||||||
|
# -p 5173:5173 \
|
||||||
|
# uc-webdev
|
||||||
|
#
|
||||||
|
# The workspace is mounted at /workspace in all cases.
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
ARG NODE_MAJOR=22
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Stage 0 — base: Debian trixie + common system deps
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
FROM debian:trixie-slim AS base
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND
|
||||||
|
ARG NODE_MAJOR
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
bash \
|
||||||
|
curl \
|
||||||
|
wget \
|
||||||
|
ca-certificates \
|
||||||
|
gnupg \
|
||||||
|
git \
|
||||||
|
git-lfs \
|
||||||
|
unzip \
|
||||||
|
jq \
|
||||||
|
ripgrep \
|
||||||
|
python3 \
|
||||||
|
python3-pip \
|
||||||
|
python3-venv \
|
||||||
|
python3-dev \
|
||||||
|
build-essential \
|
||||||
|
openssh-client \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
ENV VIRTUAL_ENV=/opt/venv
|
||||||
|
RUN python3 -m venv $VIRTUAL_ENV
|
||||||
|
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
||||||
|
|
||||||
|
RUN pip install --no-cache-dir \
|
||||||
|
requests \
|
||||||
|
pandas \
|
||||||
|
matplotlib \
|
||||||
|
openpyxl
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Stage 1 — claude-code: add Claude Code CLI
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
FROM base AS claude-code
|
||||||
|
|
||||||
|
ARG NODE_MAJOR
|
||||||
|
|
||||||
|
# Install Node.js via nodesource signed apt repo
|
||||||
|
# (the setup_*.x | bash method returns 404 as of 2025)
|
||||||
|
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
|
||||||
|
| gpg --dearmor -o /usr/share/keyrings/nodesource.gpg \
|
||||||
|
&& echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] \
|
||||||
|
https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" \
|
||||||
|
> /etc/apt/sources.list.d/nodesource.list \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends nodejs \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN npm install -g @anthropic-ai/claude-code
|
||||||
|
|
||||||
|
WORKDIR /workspace
|
||||||
|
CMD ["bash"]
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Stage 2 — webdev: add full frontend toolchain on top of claude-code
|
||||||
|
# Exposes Vite at 5173 and FastAPI/uvicorn at 8000 to serve
|
||||||
|
# JSON to the frontend for a future tool or smth..
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
FROM claude-code AS webdev
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
libvips-dev \
|
||||||
|
procps \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN pip install --no-cache-dir \
|
||||||
|
fastapi \
|
||||||
|
"uvicorn[standard]" \
|
||||||
|
pydantic
|
||||||
|
|
||||||
|
EXPOSE 5173
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
WORKDIR /workspace
|
||||||
|
CMD ["bash"]
|
||||||
Loading…
Add table
Add a link
Reference in a new issue