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

Docker构建Nuxt3生产镜像时提示bun not found问题求助

问题解决思路

错误原因

你的Dockerfile多阶段构建逻辑有误:build阶段继承自base(node:${NODE_VERSION}-slim镜像),但这个镜像里并没有安装Bun环境,所以执行bun install时会提示命令找不到。

修正后的Dockerfile

调整多阶段结构,让构建阶段基于Bun官方镜像,同时优化生产镜像的体积:

# syntax = docker/dockerfile:1

ARG BUN_VERSION=1.0.0
FROM oven/bun:${BUN_VERSION} as base

ARG PORT=3000
ENV NODE_ENV=production

# 构建阶段
FROM base as build
WORKDIR /src

# 先拷贝依赖文件,利用Docker缓存
COPY --link package.json bun.lockb ./
RUN bun install --production

# 拷贝项目源码
COPY --link . .

# 构建Nuxt项目
RUN bun run build
# 清理冗余依赖
RUN bun prune

# 生产运行阶段
FROM base as production
WORKDIR /src

# 从构建阶段拷贝必要文件
COPY --from=build /src/.output ./output
COPY --from=build /src/package.json ./

# 暴露端口
EXPOSE ${PORT}

# 启动Nuxt服务
CMD ["bun", "run", "output/server/index.mjs"]

关键调整点

  • 所有阶段统一基于oven/bun镜像,确保Bun命令可用
  • 拆分出production阶段,只拷贝构建后的产物和必要文件,缩小镜像体积
  • 添加CMD指令,确保容器启动后运行Nuxt服务
  • 保留依赖缓存层,提高后续构建速度

docker-compose.yml 补充优化

可以在docker-compose里指定环境变量和重启策略,让服务更稳定:

version: "3"
services:
  my-app:
    build:
      context: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
    restart: unless-stopped

内容的提问来源于stack exchange,提问作者CocraftGm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:42:03