From 8c59a5448f23cdef924315167c60702fe6e31297 Mon Sep 17 00:00:00 2001 From: ArkNill <48707894+ArkNill@users.noreply.github.com> Date: Thu, 21 May 2026 09:28:48 +0900 Subject: [PATCH] fix(docker): drop vendor/tokpress COPY step (build was broken since v0.9.2) The Dockerfile unconditionally COPY'd vendor/tokpress into the build, but that path is kept outside this repository -- the COPY has been failing on every tag push since v0.9.2. v0.9.4 and v0.9.5 both triggered the Docker workflow and both failed identically. The proxy already imports tokpress inside a try/except ImportError guard (src/llm_relay/proxy/proxy.py around the `_tokpress_available` flag), so the image runs unchanged when the package is absent -- the compression feature simply stays disabled, which has been the de-facto state of every Docker image attempt since v0.9.2 anyway. Action plan: - Drop the COPY + pip install lines. - Replace with a comment explaining why the optional layer is intentionally absent from the published image. - After merge, re-trigger the Docker workflow for the 0.9.5 tag via `gh workflow run docker.yml -f tag=0.9.5` so users can finally `docker pull ghcr.io/arknill/llm-relay:0.9.5`. CHANGELOG: noted under Unreleased ### Fixed (no version bump -- this is a CI / image build fix, not a code change visible to PyPI consumers). Tests: 593 pass (no source change). Ruff clean. NDA grep on diff clean. --- CHANGELOG.md | 11 +++++++++++ Dockerfile | 8 +++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc6466c..af94327 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ All notable changes to llm-relay are documented here. ## [Unreleased] +### Fixed +- **Docker image build** (`Dockerfile`): removed the unconditional + `COPY vendor/tokpress /tmp/tokpress` + `pip install` step. The vendor + source is kept outside the repository, so the COPY always failed in + GitHub Actions and the Docker workflow has been broken on every tag + since `v0.9.2`. The proxy already imports `tokpress` inside a + `try/except ImportError` guard, so the image runs unchanged when the + package is absent (`_tokpress_available` simply stays `False`). The + v0.9.5 image is rebuilt via `gh workflow run docker.yml -f tag=0.9.5` + after this change lands on `main`. + ## [0.9.5] - 2026-05-21 > Hotfix release surfaced by dogfooding `verify install` and `--help` on a diff --git a/Dockerfile b/Dockerfile index 1b4aa1a..796fb89 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,9 +5,11 @@ WORKDIR /app # Install build deps RUN pip install --no-cache-dir hatchling -# Install tokpress (from vendored copy) -COPY vendor/tokpress /tmp/tokpress -RUN pip install --no-cache-dir /tmp/tokpress && rm -rf /tmp/tokpress +# tokpress is an optional compression layer the proxy will use if it can +# import it at runtime (see src/llm_relay/proxy/proxy.py -- ImportError +# is caught and the feature simply stays disabled). Its sources live +# outside this repository, so the Docker image ships without it; nothing +# else in the proxy depends on it. # Install llm-relay dependencies COPY pyproject.toml README.md ./