Docker构建Remix项目报错:remix vite:build未找到
问题解决:Docker构建Remix时
remix: not found错误 问题原因
- 构建依赖缺失:你执行
npm install --omit=dev跳过了开发依赖,但remix vite:build命令由@remix-run/dev提供,这个包属于devDependencies,因此构建阶段找不到对应命令。 - 废弃包冗余:
remix包已被官方废弃,当前Remix Vite架构下,构建工具已集成在@remix-run/dev中,无需单独安装remix包。
解决方案
1. 改用Docker多阶段构建(推荐)
多阶段构建可以在编译阶段安装全量依赖完成构建,再在生产阶段仅保留运行时依赖,既解决命令缺失问题,又能大幅减小镜像体积:
# 构建阶段:完成代码编译 FROM node:20-bullseye-slim AS builder RUN apt-get update && apt-get install -y openssl sqlite3 WORKDIR /app COPY package.json package-lock.json ./ RUN npm install RUN npx prisma generate COPY . . RUN npm run build # 生产阶段:仅保留运行必需文件 FROM node:20-bullseye-slim RUN apt-get update && apt-get install -y openssl sqlite3 WORKDIR /app COPY --from=builder /app/package.json /app/package-lock.json ./ RUN npm install --omit=dev COPY --from=builder /app/build ./build COPY --from=builder /app/prisma ./prisma COPY --from=builder /app/public ./public EXPOSE 3000 ENV DATABASE_URL=file:./dev.db ENV PORT=3000 ENV NODE_ENV=production CMD [ "npm", "run", "start" ]
2. 修正package.json配置
- 移除dependencies中废弃的
remix包:
// 删除这一行 "remix": "^2.10.3"
- 保留现有build脚本即可(
@remix-run/dev已包含该命令支持):
"scripts": { "build": "remix vite:build", // 其余脚本保持不变 }
临时应急方案(不推荐,镜像体积偏大)
若不想调整多阶段构建,可临时取消--omit=dev参数,安装全量依赖完成构建:
# 替换原安装命令 RUN npm install # 后续构建步骤不变
内容的提问来源于stack exchange,提问作者LucaIlari
相关产品推荐
相关产品推荐

