工作区单仓结构下Bun应用容器化的Dockerfile配置求助
Bun单仓工作区Docker构建失败排查求助
项目背景
现有项目采用单仓工作区结构,原使用pnpm工作区,计划切换到Bun以提升WebSocket运行时、测试工具性能及整体表现。本地环境下Sveltekit可通过Bun正常运行,但容器化构建生产环境时遇到模块找不到的错误。
仓库结构
├── packages │ ├── blob │ ├── db │ ├── logging │ ├── permissions │ └── storage ├── sites │ ├── frontend │ │ ├── src │ │ ├── Dockerfile │ │ ├── package.json │ │ ├── svelte.config.js │ │ ├── tsconfig.json │ │ └── vite.config.ts │ └── socket │ ├── src │ ├── Dockerfile │ ├── package.json │ └── tsconfig.json ├── bunfig.toml # previously pnpm-workspace.yaml ├── bun.lockb # previously pnpm-lock.yaml ├── package.json └── tsconfig.json
工作区根目录package.json
{ "workspaces": [ "packages/*", "sites/*", ], "scripts": { "build": "cd sites/frontend && bun run build" } // ... etc }
sites/frontend下的package.json
{ "workspaces": [ "packages/*", "sites/*", ], "scripts": { "dev": "vite dev", "build": "vite build" }, "devDependencies": { "@packages/db": "workspace:*", "@packages/storage": "workspace:*", // ... } }
已尝试的方案
- 参考Bun官方Docker文档编写Dockerfile
- 基于现有pnpm的单仓Dockerfile模板修改
- 使用Fly.io的Dockerfile生成器(当前正在使用)
构建命令与报错
从工作区根目录执行构建命令:
docker build -f sites/frontend/Dockerfile --build-arg NPM_TOKEN="*****" .
在RUN bun install步骤失败,报错信息:
bun install v1.1.10 (5102a944) error: Module not found "/app/node_modules/@sites/frontend/node_modules/.bin/../@sveltejs/kit/svelte-kit.js" Bun v1.1.10 (Linux x64 baseline)
此前的Dockerfile配置还遇到过类似Vite模块找不到的错误:
error: Module not found /app/node_modules/@sites/frontend/node_modules/.bin/../vite/bin/vite.js
补充说明
手动执行Dockerfile中的步骤均能成功完成,现寻求故障排查指导、实际案例参考或可能导致问题的已知陷阱。
内容的提问来源于stack exchange,提问作者Oscar Hermoso
相关产品推荐
相关产品推荐

