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

AdonisJS 5 Docker部署运行报错Cannot find ace问题求助

问题根因

共有3处配置错误直接导致ace命令找不到,另有1处生产环境启动隐患:

  • 卷挂载路径错误:你的docker-compose.yml存放在项目根目录,fn_service的构建上下文是./service(即AdonisJS项目实际存放在根目录下的service文件夹中),但卷配置写的是- ./:/home/node/app——这会把宿主机的项目根目录直接覆盖容器内的/home/node/app工作目录,容器内根本读不到service文件夹下的ace、项目源码等文件,直接触发模块找不到的报错。
  • 多余的旧版本CLI安装:AdonisJS 5的ace不需要全局安装@adonisjs/cli,这个包是AdonisJS 4版本的旧工具,v5版本ace是项目内置的可执行文件,安装旧包反而会引发版本冲突。
  • 生产启动命令路径错误:Dockerfile里production阶段的CMD写的是node service/build/server.js,但build阶段已经把编译产物拷贝到工作目录根路径,多余的service/前缀会导致生产镜像启动时也报文件不存在错误。
修复步骤

1. 修正docker-compose.yml的卷挂载配置

找到fn_service服务下的volumes配置段,把原来的根目录挂载改为指向实际的Adonis项目目录,修改后配置如下:

volumes:
  - ./service:/home/node/app
  - /home/node/app/node_modules

注:第二条匿名卷配置作用是保留容器内安装的node_modules,避免被宿主机不同系统环境下的node_modules(二进制依赖不兼容)覆盖,该配置逻辑正确无需修改。

2. 修正Dockerfile配置

首先删除dependencies阶段多余的RUN npm i @adonisjs/cli行,再修正production阶段的CMD启动路径,修改完成的完整Dockerfile如下:

ARG NODE_IMAGE=node:16.13.1-alpine

FROM $NODE_IMAGE AS base
RUN apk --no-cache add dumb-init
RUN mkdir -p /home/node/app && chown node:node /home/node/app
WORKDIR /home/node/app
USER node
RUN mkdir tmp

FROM base AS dependencies
COPY --chown=node:node ./package*.json ./
RUN npm ci
COPY --chown=node:node . .

FROM dependencies AS build
RUN node ace build --production

FROM base AS production
ENV NODE_ENV=production
ENV PORT=$PORT
ENV HOST=0.0.0.0
COPY --chown=node:node ./package*.json ./
RUN npm ci --production
COPY --chown=node:node --from=build /home/node/app/build .
EXPOSE $PORT
CMD [ "dumb-init", "node", "server.js" ]

3. 清理缓存重启验证

执行以下命令清理旧的构建缓存、已停止容器和匿名卷,重新构建启动服务:

docker-compose down -v
docker-compose up --build

正常启动后fn_service会正确识别ace文件,进入watch模式运行服务。

补充排查手段

如果修改后仍报ace找不到,可以进容器手动校验文件状态:

  • 先把docker-compose里fn_service的command临时改成sleep 3000,重启容器
  • 执行docker exec -it fn_service sh进入容器交互shell
  • 执行ls -la查看工作目录下的文件,确认ace文件存在且有可执行权限,若权限不足执行chmod +x ace即可修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:30:36