diff --git a/README.md b/README.md index 010696944..16e8c897b 100644 --- a/README.md +++ b/README.md @@ -238,7 +238,7 @@ docker run -p 3333:3333 -v wigolo-data:/data \ ghcr.io/knockoutez/wigolo serve --host 0.0.0.0 ``` -The slim image lazy-loads models into the volume; `:full` preinstalls the browser engine. Also on Docker Hub as `towhid69420/wigolo`. → [installation & all channels](docs/installation.md) +The slim image lazy-loads models into the volume; `ghcr.io/knockoutez/wigolo:latest-full` preinstalls the browser engine. Versioned releases use the same `-full` suffix (for example, `0.2.1-full`). Also on Docker Hub as `towhid69420/wigolo`. → [installation & all channels](docs/installation.md) ### Agent skills diff --git a/docs/installation.md b/docs/installation.md index 05e325420..99eed13cc 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -43,7 +43,13 @@ docker compose -f packaging/compose.serve.yml up The compose file binds `0.0.0.0` inside the container, which is a non-loopback bind: the daemon **fails closed** and refuses to start until you set `WIGOLO_API_TOKEN` (uncomment the line in the file) or explicitly opt into open access. Details in [self-hosting](./self-hosting.md). -The repo's `Dockerfile` also has a `full` build target with the browser engine preinstalled at build time — useful for `--rm`/no-volume runs where first-use downloads would repeat: +The published browser-preloaded image is `ghcr.io/knockoutez/wigolo:latest-full`; versioned releases use the same `-full` suffix (for example, `0.2.1-full`). It is useful for `--rm`/no-volume runs where first-use browser downloads would repeat: + +```bash +docker run -i --rm ghcr.io/knockoutez/wigolo:latest-full +``` + +For local builds, the repo's `Dockerfile` exposes the corresponding `full` build target: ```bash docker build --target full -t wigolo:full . diff --git a/tests/unit/documentation/docker-image-tags.test.ts b/tests/unit/documentation/docker-image-tags.test.ts new file mode 100644 index 000000000..63c776e59 --- /dev/null +++ b/tests/unit/documentation/docker-image-tags.test.ts @@ -0,0 +1,21 @@ +import { readFileSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { describe, expect, it } from 'vitest'; + +const repoRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..', '..'); +const readme = readFileSync(join(repoRoot, 'README.md'), 'utf-8'); +const installationGuide = readFileSync(join(repoRoot, 'docs', 'installation.md'), 'utf-8'); + +describe('published Docker image tags', () => { + it('documents the published browser-preloaded image tag', () => { + expect(readme).toContain('ghcr.io/knockoutez/wigolo:latest-full'); + expect(installationGuide).toContain('ghcr.io/knockoutez/wigolo:latest-full'); + }); + + it('does not present the nonexistent :full tag as a published image', () => { + for (const document of [readme, installationGuide]) { + expect(document).not.toContain('ghcr.io/knockoutez/wigolo:full'); + } + }); +});