`docker build` failed twice over because .dockerignore excluded two trees the image actually needs. The panel stage's `COPY panel/ ./` hit `"/panel": not found`, and even past that the Go build would fail: the root felis package //go:embeds deploy/bootstrap.sh and deploy/crd/*.yaml, which `COPY . .` dropped along with the excluded deploy/. The stale header comment claimed only internal/store/migrations was embedded, which is what licensed the over-broad exclusions. Rewrite it to name all three embedded trees (migrations, deploy assets, panel static) and warn against re-adding panel/, deploy/, or internal/ without re-checking the go:embed list. Tighten node_modules -> **/node_modules so a working-tree build no longer drags panel/node_modules over the Linux modules npm ci installs in the panel stage.
20 lines
589 B
Plaintext
20 lines
589 B
Plaintext
# Keep the felis image build context lean, but mind the embeds: three trees MUST
|
|
# stay in the context or the image build fails. internal/store/migrations/*.sql,
|
|
# deploy/bootstrap.sh and deploy/crd/*.yaml are //go:embed-ed by Go packages the
|
|
# binary compiles, and internal/panel/static is the panel the Dockerfile panel
|
|
# stage builds from panel/. Exclude only build-irrelevant trees below; never add
|
|
# panel/, deploy/, or internal/ here without checking `grep -rn go:embed`.
|
|
.git
|
|
.claude
|
|
**/node_modules
|
|
plugins
|
|
docs
|
|
*.md
|
|
Dockerfile
|
|
.dockerignore
|
|
.gitignore
|
|
*.pem
|
|
*.key
|
|
felis
|
|
felis.exe
|