SPB Git forge
38commits 1branches 0releases
338.7 MBsize
maindefault branch
3 h agolast push
HTML 53.9% TypeScript 44.5% JavaScript 0.6% SQL 0.5%
2.2 KB · 53 lines
Raw Blame History
1# syntax=docker/dockerfile:1.72# DataCenterIndex — Fastify API image (apps/api, run with tsx like the worker).3# Build context = repo root:  docker build -f deploy/docker/Dockerfile.api .4ARG NODE_IMAGE=node:22-bookworm-slim5ARG PNPM_VERSION=11.1.26ARG TSX_VERSION=4.23.1378FROM ${NODE_IMAGE} AS base9ARG PNPM_VERSION10ENV PNPM_HOME=/pnpm \11    PATH=/pnpm:$PATH \12    npm_config_store_dir=/pnpm/store13RUN (corepack enable && corepack prepare "pnpm@${PNPM_VERSION}" --activate) \14 || npm install -g "pnpm@${PNPM_VERSION}" --no-fund --no-audit1516FROM base AS fetch17WORKDIR /app18COPY pnpm-lock.yaml pnpm-workspace.yaml ./19RUN --mount=type=cache,id=dci-pnpm-store,target=/pnpm/store pnpm fetch --prod && rm -rf node_modules2021FROM fetch AS deps22COPY . .23RUN --mount=type=cache,id=dci-pnpm-store,target=/pnpm/store \24    pnpm install --offline --frozen-lockfile --config.dangerously-allow-all-builds=true --config.confirm-modules-purge=false --prod --filter "@dci/api..." \25 && rm -rf apps/web apps/worker scripts2627FROM ${NODE_IMAGE} AS runtime28ARG TSX_VERSION29ENV NODE_ENV=production \30    NODE_OPTIONS=--enable-source-maps \31    DCI_CONFIG_DIR=/app/config/connectors \32    API_PORT=8311 \33    HOST=0.0.0.034RUN apt-get update \35 && apt-get install -y --no-install-recommends tini ca-certificates \36 && rm -rf /var/lib/apt/lists/* \37 && npm install -g "tsx@${TSX_VERSION}" --no-fund --no-audit \38 && npm cache clean --force39WORKDIR /app40COPY --from=deps --chown=node:node /app/package.json /app/pnpm-workspace.yaml /app/tsconfig.base.json ./41COPY --from=deps --chown=node:node /app/node_modules ./node_modules42COPY --from=deps --chown=node:node /app/packages ./packages43COPY --from=deps --chown=node:node /app/apps/api ./apps/api44COPY --from=deps --chown=node:node /app/config ./config45COPY --chmod=755 deploy/docker/entrypoint.sh /usr/local/bin/dci-entrypoint46RUN ln -s /usr/local/lib/node_modules/tsx /app/node_modules/tsx47USER node48EXPOSE 831149HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \50  CMD ["node", "-e", "fetch('http://127.0.0.1:'+(process.env.API_PORT||8311)+'/api/ready').then(r=>process.exit(r.ok?0:1),()=>process.exit(1))"]51ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/dci-entrypoint"]52CMD ["api"]53