Docker images for LangBot infrastructure.
Each subdirectory contains a Dockerfile for one image. Pushing to main auto-builds and pushes changed images to Docker Hub under rockchin/<dir>.
| Directory | Image | Description |
|---|---|---|
langbot-sandbox |
rockchin/langbot-sandbox |
Python 3.12 + Node 22 + common tools (git, vim, curl, wget, jq) for LangBot langbot-sandbox environments |
rockchin/langbot-sandbox includes Matplotlib, pandas, and Noto CJK fonts.
Matplotlib defaults to the headless Agg backend and a CJK-capable sans-serif font,
so ordinary plotting scripts can render simplified/traditional Chinese without
installing packages or setting a font on every invocation. These defaults apply
to both root and non-root users. Scripts that explicitly replace the font settings
(including some styles) must select a CJK font themselves; Noto Sans CJK JP is
the family Matplotlib discovers in Debian's bundled Noto collection.
The dependency versions are pinned in langbot-sandbox/requirements.txt.
Every image build runs langbot-sandbox/tests/smoke_test.py, checking pandas CSV
processing, default-font glyph coverage (including the Unicode minus), and real
Chinese PNG rendering with missing-glyph warnings treated as errors. Pull requests
build/test both amd64 and arm64 without publishing.
To verify locally:
docker build -t langbot-sandbox:test ./langbot-sandbox
docker run --rm --network none \
-v "$PWD/langbot-sandbox/tests/smoke_test.py:/tmp/smoke_test.py:ro" \
langbot-sandbox:test python /tmp/smoke_test.pyExisting installations must pull the updated image on the Docker host used by LangBot Box, then recreate their sandbox sessions/containers. Updating LangBot alone or restarting an existing sandbox does not replace its image:
docker pull rockchin/langbot-sandbox:latestBack up any needed files installed or written only inside an old container before recreating it. Bind-mounted workspace data is separate from the container image.
- Create a new directory (e.g.
my-image/) - Add a
Dockerfileinside it - Push to
main— CI will auto-detect and buildlangbot/my-image
Use the workflow dispatch to build a specific image:
gh workflow run build.yml -f image=langbot-sandbox
DOCKERHUB_USERNAME— Docker Hub username (rockchin)DOCKERHUB_TOKEN— Docker Hub access token