You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

工作区单仓结构下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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:35:02