| |
| |
| |
| |
| |
|
|
| ARG NODE_VERSION=20.18.0 |
|
|
| |
| FROM node:${NODE_VERSION}-bookworm-slim AS deps |
| ENV PNPM_HOME=/usr/local/pnpm |
| ENV PATH=$PNPM_HOME:$PATH |
| RUN apt-get update \ |
| && apt-get install -y --no-install-recommends python3 make g++ \ |
| && rm -rf /var/lib/apt/lists/* \ |
| && corepack enable \ |
| && corepack prepare pnpm@9.12.3 --activate |
| WORKDIR /app |
| COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./ |
| COPY packages/core/package.json packages/core/ |
| COPY apps/web-legacy/package.json apps/web-legacy/ |
| COPY apps/api/package.json apps/api/ |
| RUN pnpm install --frozen-lockfile |
|
|
| |
| FROM deps AS build |
| COPY packages/core packages/core |
| COPY apps/web-legacy apps/web-legacy |
| COPY apps/api apps/api |
| RUN pnpm --filter @task-optimizer/core build \ |
| && pnpm --filter @task-optimizer/web-legacy build \ |
| && pnpm --filter @task-optimizer/api build |
|
|
| |
| FROM node:${NODE_VERSION}-bookworm-slim AS runtime |
| ENV NODE_ENV=production |
| ENV PNPM_HOME=/usr/local/pnpm |
| ENV PATH=$PNPM_HOME:$PATH |
| RUN corepack enable \ |
| && corepack prepare pnpm@9.12.3 --activate |
| WORKDIR /app |
|
|
| |
| COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./ |
| COPY packages/core/package.json packages/core/ |
| COPY apps/web-legacy/package.json apps/web-legacy/ |
| COPY apps/api/package.json apps/api/ |
|
|
| |
| RUN pnpm install --prod --frozen-lockfile |
|
|
| |
| COPY --from=build /app/packages/core/dist packages/core/dist |
| COPY --from=build /app/apps/api/dist apps/api/dist |
|
|
| |
| COPY --from=build /app/apps/web-legacy/dist apps/web-legacy/dist |
|
|
| |
| |
| RUN mkdir -p /app/data/uploads /app/data/exports |
|
|
| EXPOSE 3001 |
|
|
| |
| HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ |
| CMD node -e "fetch('http://127.0.0.1:3001/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" |
|
|
| CMD ["node", "apps/api/dist/server.js"] |
|
|