Improved the .dockerignore definitions in the Website service target.

This commit is contained in:
2026-08-30 09:22:10 +02:00
parent 8bf6e86ffb
commit 1cae261dff
2 changed files with 12 additions and 3 deletions
+11 -2
View File
@@ -1,7 +1,16 @@
# Applies only when this directory is itself the build context. The Dockerfile
# builds from the repository root (it copies the sibling Packages/), so today's
# builds read the root .dockerignore instead — keep the two in step.
.build
.swiftpm
.DS_Store
.env.local
docker-compose.*
Makefile
README.md
README.md
# The double star matches at every depth; a bare pattern only covers the context root.
**/.DS_Store
# Local database data directory (bind-mounted by Compose)
Tests/DB
+1 -1
View File
@@ -285,7 +285,7 @@ The production image is built in release mode with a statically linked Swift run
`IMAGE_PLATFORM` is the single source of truth for the deployment architecture: `make img-check` and `make img-release` both build for it, and `docker-compose.yml` runs the pulled image with it. Keep it matched to the deployment host — the three have to agree, or a release builds for one architecture and the production Compose file refuses to run it. Local development builds are separate and follow `BUILD_PLATFORM` (see `docker-compose.override.yml`), since they target your machine rather than the deployment.
The test sources are deliberately absent from the image. SPM validates the path of every target in the root package — including the test targets — even when only the executable product is built, so the Dockerfile creates those two directories empty rather than copying them. That keeps test edits from invalidating the release-build layer, and keeps the local database bind mount under `Tests/DB` out of the build context entirely (`.dockerignore` excludes `**/Tests` for the same reason).
The test sources are deliberately absent from the image. SPM validates the path of every target in the root package — including the test targets — even when only the executable product is built, so the Dockerfile creates those two directories empty rather than copying them. That keeps test edits from invalidating the release-build layer, and keeps the local database bind mount under `Tests/DB` out of the build context entirely (the root `.dockerignore` excludes `**/Tests/DB` for the same reason).
### Base images
All three stages pin their base by digest as well as tag, so a rebuild of an old commit resolves the same bases it originally used. The trade-off is that they no longer pick up upstream rebuilds on their own: **refresh the digests deliberately**, on whatever cadence you patch on, with