🤖 fix: Docker image omits the web app manifest, icons and fonts from dist/
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 65/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- docker, vite
- 領域
- devops
調査の方向性
Dockerfile のランタイムステージから始めてください。そこでは COPY --from=builder /app/dist/... の行がビルダーの dist/ からファイルを選択しています。Vite は public/ を dist/ にコピーするため、既存のパターンで漏れているファイル(manifest.json、.ico と .png のアイコン、src/browser/styles/globals.css に含まれる .woff/.woff2 フォント)がどれかを確認してください。ビルド済みイメージがそれらのファイルを curl で確認して 200 で配信し、.github/workflows/pr.yml の Docker パスフィルターがビルダーステージに引き続きマッチすれば完了です。
索引モデルが issue の本文から書いたものです。
説明
The Docker runtime stage leaves the web app's manifest, icons and fonts out of the image. xum server in Docker therefore cannot serve them.
Evidence (Dockerfile read on origin/main 27e888d36a)
The runtime stage copies only these paths from the builder's dist/:
COPY --from=builder /app/dist/static ./dist/static
COPY --from=builder /app/dist/*.html ./dist/
COPY --from=builder /app/dist/*.css ./dist/
COPY --from=builder /app/dist/*.js ./dist/
COPY --from=builder /app/dist/*.br /app/dist/*.gz ./dist/
COPY --from=builder /app/dist/typescript-lib ./dist/typescript-lib
COPY --from=builder /app/dist/runtime ./dist/runtime
Vite copies public/ into dist/. No pattern above matches these public/ files: manifest.json, favicon.ico, favicon-dark.ico, apple-touch-icon.png, icon.png, icon-192.png, icon-512.png. index.html links manifest.json, favicon.ico and apple-touch-icon.png. Vite emits fonts as *.woff/*.woff2, which no pattern matches either (src/browser/styles/globals.css loads nerd-font-symbols.woff2). service-worker.js is covered by dist/*.js.
I did not build the image, so the runtime result is not verified. Before #5963, a missing file got the SPA page with status 200. After #5963, it gets 404.
Fix
Copy the missing extensions (at least *.json, *.png, *.ico, *.woff, *.woff2) in the runtime stage. Then check them with curl against a built image. Keep the .github/workflows/pr.yml docker path filter in sync if the builder stage changes.
Owner: coordinator desk (workspace 3203e76efb). Found by the #5945 server-paths lane.
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high • Cost: $3.14
- 主要言語
- TypeScript
- スター
- 2.1k
- フォーク
- 139
- 平均マージ
- 3時間 45分
- マージ済み PR(30日)
- 953
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
coder/xum のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
better-auth/better-auth#12132 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
o8 next debug build aborts on Glass to Dark appearance switch (nil identifier messaged before check)オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
hurttlocker/o8#5112 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
webrecorder/wabac.js#386 ·
-
needs-triage
難易度 1/5 1〜3時間 初心者へのやさしさ 92/100
agent-of-empires/agent-of-empires#5098 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信