We use Docker for Jekyll serving only. VS Code, Claude Code, and other dev tools run on the host (not in the devcontainer).
- start Jekyll:
$ docker compose up(ordocker compose up -dfor background)- get interactive terminal:
$ docker compose exec -it keiserlab bash
- get interactive terminal:
- dev website serves at http://localhost:4000
- edit files, run python scripts, and use git on the host
bundlemanages the container's ruby environment (for Jekyll)- check for dependency updates:
- bundler:
$ bundle update --bundler - all other gems:
$ bundle update
- bundler:
uvmanages python on the host (not in the container)- run python scripts like
uv run myscript.pyoruvx --with <pkg> python3 -c "..." - check for dependency updates:
$ uv lock --upgrade- if updated, include
uv.lockin the git commit
- if updated, include
- run Claude Code CLI on the host:
claude - set
ANTHROPIC_API_KEYin your environment to authenticate
- a vscode devcontainer is available if you prefer running everything inside the container
- the devcontainer auto-installs the Claude Code extension
- or install the CLI directly:
curl -fsSL https://claude.ai/install.sh | bash - set
GH_TOKENon the host so it's available inside the container:export GH_TOKEN=$(gh auth token)
- add this to
~/.zshenv(not~/.zshrc) so it's available during vscode devcontainer auto-rebuilds
- force container rebuild with
$ docker-compose build --no-cache
- we're using the Minimal Mistakes jekyll theme
- theme setup and use: setup guide