Dockerfile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. ARG BASE_IMAGE=nousresearch/hermes-agent:latest
  2. FROM ${BASE_IMAGE}
  3. ARG NODE_VERSION=24.15.0
  4. USER root
  5. RUN apt-get update && apt-get install -y --no-install-recommends \
  6. ca-certificates \
  7. curl \
  8. ffmpeg \
  9. make \
  10. g++ \
  11. && rm -rf /var/lib/apt/lists/*
  12. RUN ARCH=$(dpkg --print-architecture) \
  13. && if [ "$ARCH" = "amd64" ]; then NODE_ARCH="x64"; else NODE_ARCH="$ARCH"; fi \
  14. && echo "Downloading Node.js v${NODE_VERSION} for ${NODE_ARCH}" \
  15. && curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.gz" \
  16. -o /tmp/node.tar.gz \
  17. && rm -rf /usr/local/lib/node_modules/npm /usr/local/lib/node_modules/corepack \
  18. /usr/local/bin/node /usr/local/bin/npm /usr/local/bin/npx /usr/local/bin/corepack \
  19. && tar -xzf /tmp/node.tar.gz -C /usr/local --strip-components=1 \
  20. && rm -f /tmp/node.tar.gz \
  21. && node --version \
  22. && npm --version
  23. WORKDIR /app
  24. COPY package*.json ./
  25. # Increase Node.js memory limit to prevent OOM during build
  26. ENV NODE_OPTIONS=--max-old-space-size=4096
  27. RUN npm ci --ignore-scripts && npm rebuild node-pty
  28. COPY . .
  29. RUN npm run build && npm prune --omit=dev
  30. ENV NODE_ENV=production
  31. ENV HOME=/home/agent
  32. ENV HERMES_HOME=/home/agent/.hermes
  33. ENV HERMES_WEB_UI_MANAGED_GATEWAY=1
  34. ENV PATH=/opt/hermes/.venv/bin:$PATH
  35. EXPOSE 6060
  36. # 强制覆盖基础镜像的默认启动脚本,让镜像本身具备独立运行的能力
  37. ENTRYPOINT ["node", "dist/server/index.js"]
  38. CMD []
粤ICP备19079148号