|
| 1 | +# Every image here builds with the REPO ROOT as context (image/Dockerfile, image/Dockerfile.azure, |
| 2 | +# receiver/Dockerfile), so without this file each build ships the whole working tree to the daemon -- |
| 3 | +# node_modules alone is ~350 MB of upload before the first layer runs. |
| 4 | +# |
| 5 | +# Patterns are ANCHORED to the context root (dockerignore is filepath.Match, not gitignore): `docs` |
| 6 | +# matches only ./docs, and matching node_modules at any depth needs the explicit `**/`. |
| 7 | +# |
| 8 | +# What must STAY in the context is defined by the Dockerfiles' COPY lines: |
| 9 | +# image/Dockerfile: package.json, package-lock.json, image/runner, image/entrypoint.sh, guardrails/ |
| 10 | +# receiver/Dockerfile: package.json, package-lock.json, .npmrc, worker/{package.json,src}, |
| 11 | +# receiver/{package.json,src} |
| 12 | +# image/ is therefore NOT excluded wholesale -- the pi-job build copies image/runner verbatim (its test/ |
| 13 | +# included; excluding it would silently change that image's contents), and guardrails/ is the baked |
| 14 | +# safety floor. Anything below is copied by no Dockerfile and never may be. |
| 15 | + |
| 16 | +# Installed deps -- each image runs its own `npm ci` from the lockfile; a host node_modules in the |
| 17 | +# context is pure upload weight and a platform mismatch waiting to be COPY'd by accident. |
| 18 | +**/node_modules |
| 19 | + |
| 20 | +# History and CI config: builds consume the working tree, never the repo. |
| 21 | +.git |
| 22 | +.github |
| 23 | + |
| 24 | +# Docs, specs, planning, editor/agent tooling -- prose and provenance, not runtime. |
| 25 | +docs |
| 26 | +specs |
| 27 | +examples |
| 28 | +.plan-artifacts |
| 29 | +.pi |
| 30 | +.claude |
| 31 | +README.md |
| 32 | +SECURITY.md |
| 33 | +LICENSE |
| 34 | + |
| 35 | +# The admin workspace: a pi extension in the operator's session (DES-ADMIN-VIA-PI-EXTENSION); |
| 36 | +# no image runs it. |
| 37 | +admin |
| 38 | + |
| 39 | +# Deploy templates (systemd/launchd/nssm/compose) configure the HOST, not a container. |
| 40 | +deploy |
| 41 | + |
| 42 | +# Tests for the workspaces whose src is copied. image/runner/test is deliberately NOT listed: |
| 43 | +# image/Dockerfile copies image/runner as a whole, and the ignore file must not edit that image. |
| 44 | +worker/test |
| 45 | +receiver/test |
| 46 | + |
| 47 | +# Secrets and operator-local state. The .env never enters an image -- compose hands it to the |
| 48 | +# CONTAINER via env_file; a real secret in a LAYER is published with the image. |
| 49 | +.env |
| 50 | +.env.* |
| 51 | +triggers.json |
| 52 | +pause-windows.json |
| 53 | +pi-packages.json |
| 54 | +subscriptions.json |
| 55 | +logs |
| 56 | +jobs |
| 57 | +sessions |
| 58 | +**/*.log |
0 commit comments