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

Docker中bun --bun run vite build未生成build目录导致COPY失败求助

解决Bun + SvelteKit Docker构建中build目录缺失的问题

可能的原因及排查步骤

1. 检查prerelease阶段的文件复制是否完整

Docker构建时,如果没把SvelteKit项目的全部源码(包括vite.config.js/svelte.config.js、src目录、package.json等)复制到镜像工作目录,构建命令可能静默执行但无实际可构建内容。

  • 确认prerelease阶段包含完整的COPY指令:
    WORKDIR /usr/src/app
    COPY package.json bun.lockb ./
    RUN bun install
    COPY . . # 复制所有源码文件到镜像中
    
  • 同时检查.dockerignore文件,确保没有忽略src、配置文件等必要目录。

2. 确认工作目录与构建输出路径匹配

  • 核实prerelease阶段的WORKDIR是否为/usr/src/app,如果工作目录是其他路径,build目录会生成在对应路径下,而非/usr/src/app/build。
  • 检查SvelteKit的构建输出配置:打开vite.config.js或svelte.config.js,确认build.outDir的值是build(默认值)。如果被修改为dist或其他路径,需要同步修改COPY指令的目标路径,比如:
    // vite.config.js示例
    export default defineConfig({
      build: {
        outDir: 'dist' // 若配置为此值,COPY路径需改为/usr/src/app/dist
      }
    })
    

3. 排查Docker构建缓存问题

Docker会缓存各阶段的执行结果,如果prerelease阶段的构建步骤被缓存,可能实际未重新执行构建命令。尝试添加--no-cache参数重新构建:

docker build --no-cache -t your-image-name .

4. 验证构建命令的执行环境与权限

  • 在prerelease阶段添加目录查看指令,确认文件存在及构建结果:
    RUN ls -la /usr/src/app # 构建前查看目录内容
    RUN bun --bun run vite build
    RUN ls -la /usr/src/app # 构建后查看是否生成build目录
    
  • 如果使用非root用户执行构建,确保该用户对/usr/src/app目录有写入权限:
    RUN chown -R your-user:your-group /usr/src/app
    

5. 统一Bun版本

本地与Docker镜像中的Bun版本不一致可能导致行为差异,在prerelease阶段指定与本地一致的Bun版本:

FROM oven/bun:1.0.20 AS prerelease # 替换为你本地使用的Bun版本号

内容的提问来源于stack exchange,提问作者Johannes Klauß

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:16:18