All-in-one Docker image with prebuilt language support (#42)
authorStefan Gasser <redacted>
Sat, 17 Jan 2026 13:10:36 +0000 (14:10 +0100)
committerGitHub <redacted>
Sat, 17 Jan 2026 13:10:36 +0000 (14:10 +0100)
commitd50099e8d0c2d4f49174e51521580ea804d16a07
tree008f9005843715ec519ebdfd0d5009ff2afbbff1
parenta69b9e7477724bb6be6deea39d82068e4b2a330b
All-in-one Docker image with prebuilt language support (#42)

* All-in-one Docker image with dev mode support

Simplify deployment with a single container that includes both the proxy
and Presidio PII detection. No git clone required - just docker run.

Changes:
- Combined Dockerfile: Multi-stage build with Presidio + Bun in one container
- supervisord: Process manager for running both services
- Prebuilt images: ghcr.io/sgasser/pasteguard:en (~2.7GB) and :eu (~12GB)
- Release workflow: GitHub Actions to build en/eu images on version tags
- Dev mode: docker compose up presidio -d for local development with hot-reload
- Updated docs: curl-based installation, no cloning needed for production
- Language models: Changed from _md to _lg for better PII detection accuracy

Image tags:
- en (default/latest): English only
- eu: European languages (en, de, es, fr, it, nl, pl, pt, ro)

* Move Docker files into docker/ directory

Reorganize Docker-related files for cleaner project structure:
- Dockerfile → docker/Dockerfile
- supervisord.conf → docker/supervisord.conf
- presidio/ → docker/presidio/

Keep docker-compose.yml in root for convenience (docker compose up works).
Update all path references in workflow, configs, and docs.

* Fix CI: update Dockerfile path

* Include config.example.yaml in Docker image for zero-config startup

* Simplify docs: zero-config quickstart

* Add missing ENV detection entities to config example

Add ENV_PASSWORD, ENV_SECRET, and CONNECTION_STRING to the
secrets_detection entities section to match what's documented
and implemented.

* Auto-configure languages per Docker image

- Add PASTEGUARD_LANGUAGES env var to Dockerfile (set from LANGUAGES build arg)
- Update config.example.yaml to use env var with fallback to 'en'
- Support comma-separated string for languages config (e.g., "en,de,fr")
- EN image now auto-enables English, EU image auto-enables all 9 EU languages

Users can still override via config.yaml with array syntax if needed.

* Update docs: languages are auto-configured per image

* Clarify runtime vs build-time env vars in docs

* Update docs: languages are auto-configured per Docker image

* Remove confusing env var override example from docs

* List specific EU languages in docs instead of 'All 9'
19 files changed:
.github/workflows/ci.yml
.github/workflows/release.yml [new file with mode: 0644]
CLAUDE.md
CONTRIBUTING.md
Dockerfile [deleted file]
README.md
config.example.yaml
docker-compose.yml
docker/Dockerfile [new file with mode: 0644]
docker/presidio/generate-configs.py [moved from presidio/scripts/generate-configs.py with 91% similarity]
docker/presidio/languages.yaml [moved from presidio/languages.yaml with 79% similarity]
docker/supervisord.conf [new file with mode: 0644]
docs/concepts/pii-detection.mdx
docs/configuration/pii-detection.mdx
docs/installation.mdx [new file with mode: 0644]
docs/mint.json
docs/quickstart.mdx
presidio/Dockerfile [deleted file]
src/config.ts
git clone https://git.99rst.org/PROJECT