Skip to content

fix(docker): include .claude-plugin and skills#40

Closed
hwesterb wants to merge 1 commit intomainfrom
fix/dockerfile-include-plugin-skills
Closed

fix(docker): include .claude-plugin and skills#40
hwesterb wants to merge 1 commit intomainfrom
fix/dockerfile-include-plugin-skills

Conversation

@hwesterb
Copy link
Copy Markdown
Member

Follow-up to #39. Railway build failed with:

```
FileNotFoundError: Forced include not found: /app/.claude-plugin
```

`pyproject.toml` has `[tool.hatch.build.targets.wheel.force-include]` that requires `.claude-plugin/` and `skills/` to exist at build time. The old Nixpacks recipe did `COPY . /app` so they were always present. The new explicit Dockerfile allow-list missed them.

Adds both to the `COPY` steps before `pip install`.

Latest Railway deploy failed with:

    FileNotFoundError: Forced include not found: /app/.claude-plugin

pyproject.toml's [tool.hatch.build.targets.wheel.force-include] requires
`.claude-plugin/` and `skills/` to exist at build time. The previous
Nixpacks recipe copied the whole repo (via `COPY . /app`), so these were
never missing. The new Dockerfile's explicit allow-list missed them.

Adding both directories to the COPY step before pip install.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hwesterb
Copy link
Copy Markdown
Member Author

Wrong direction — will restructure so Dockerfile at root stays as the MCP one (Glama-facing), and Railway uses RAILWAY_DOCKERFILE_PATH to point at a separate web Dockerfile.

@hwesterb hwesterb closed this Apr 18, 2026
@hwesterb hwesterb deleted the fix/dockerfile-include-plugin-skills branch April 18, 2026 20:46
hwesterb added a commit that referenced this pull request Apr 18, 2026
Correcting the direction of #39. The root `Dockerfile` is now back to
the MCP stdio server (its original canonical-path content, the artifact
Glama fetches). The multi-stage web build lives at `Dockerfile.web`, and
Railway is configured via the `RAILWAY_DOCKERFILE_PATH` environment
variable to build from it instead of auto-detecting the root Dockerfile.

Also folds in the missing-include fix from PR #40: `.claude-plugin/`
and `skills/` must be COPY'd before `pip install` because hatchling's
`force-include` demands they exist at build time.

Env var set on Railway separately via `railway variable set`.

Effective layout after this PR:

- `Dockerfile`       MCP stdio server (unchanged from #37)       → Glama
- `Dockerfile.web`   Multi-stage web build                        → Railway
- `.dockerignore`    Trims build context                          → both
- `railway.json`     Healthcheck + restart policy only            → Railway

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant