Files
cursor2api/Dockerfile
guoyongchang 8a26c9ed55 fix: remove references to deleted jscode/ directory in Dockerfile
The jscode/ directory was removed in v2.0.0 but the Dockerfile still
referenced it, causing docker compose build to fail.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 18:11:55 +08:00

44 lines
1.1 KiB
Docker

# ==== Stage 1: 构建阶段 (Builder) ====
FROM node:22-alpine AS builder
# 设置工作目录
WORKDIR /app
# 仅拷贝包配置并安装所有依赖项(利用 Docker 缓存层)
COPY package.json package-lock.json ./
RUN npm ci
# 拷贝项目源代码并执行 TypeScript 编译
COPY tsconfig.json ./
COPY src ./src
RUN npm run build
# ==== Stage 2: 生产运行阶段 (Runner) ====
FROM node:22-alpine AS runner
WORKDIR /app
# 设置为生产环境
ENV NODE_ENV=production
# 出于安全考虑,避免使用 root 用户运行服务
RUN addgroup --system --gid 1001 nodejs && \
adduser --system --uid 1001 cursor
# 拷贝包配置并仅安装生产环境依赖(极大减小镜像体积)
COPY package.json package-lock.json ./
RUN npm ci --omit=dev \
&& npm cache clean --force
# 从 builder 阶段拷贝编译后的产物
COPY --from=builder --chown=cursor:nodejs /app/dist ./dist
# 明确并赋予权限,因为在脚本验证里我们需要写入 /tmp
# 默认情况下 Alpine 的 /tmp 对所有用户都可写,这步安全地确保用户权限
USER cursor
# 声明对外暴露的端口
EXPOSE 3010
# 启动服务
CMD ["npm", "start"]