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
相关产品推荐
相关产品推荐

