diff --git a/Dockerfile b/Dockerfile index da4354866..e6ed409ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,6 +29,7 @@ WORKDIR /prepare RUN turbo prune @blobscan/web --docker --out-dir /prepare/web RUN turbo prune @blobscan/rest-api-server --docker --out-dir /prepare/api +# TODO: add clis here? # stage: web-builder FROM deps AS web-builder @@ -48,10 +49,11 @@ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm fetch -r RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile COPY --from=deps /prepare/web/full . +COPY --from=deps /prepare/clis ./clis # Copy original which includes pipelines COPY --from=deps /prepare/turbo.json . -RUN --mount=type=cache,id=pnpm,target=/pnpm/store DATABASE_URL=${DATABASE_URL} DIRECT_URL=${DIRECT_URL} pnpm build --filter=@blobscan/web +RUN --mount=type=cache,id=pnpm,target=/pnpm/store DATABASE_URL=${DATABASE_URL} DIRECT_URL=${DIRECT_URL} pnpm build --filter=@blobscan/web --filter="./clis/*" # stage: web FROM base AS web @@ -70,6 +72,7 @@ COPY --from=web-builder --chown=nextjs:nodejs /prepare/api/full/packages/db/pris COPY --from=web-builder --chown=nextjs:nodejs /app/apps/web/.next/standalone ./ COPY --from=web-builder --chown=nextjs:nodejs /app/apps/web/.next/static ./apps/web/.next/static COPY --from=web-builder --chown=nextjs:nodejs /app/apps/web/public ./apps/web/public +COPY --from=web-builder --chown=nextjs:nodejs /app/clis ./clis USER nextjs @@ -94,10 +97,10 @@ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm fetch -r RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile COPY --from=deps /prepare/api/full . +COPY --from=deps /prepare/clis ./clis -# Copy original which includes pipelines COPY --from=deps /prepare/turbo.json . -RUN --mount=type=cache,id=pnpm,target=/pnpm/store DATABASE_URL=${DATABASE_URL} DIRECT_URL=${DIRECT_URL} pnpm build --filter=@blobscan/rest-api-server +RUN --mount=type=cache,id=pnpm,target=/pnpm/store DATABASE_URL=${DATABASE_URL} DIRECT_URL=${DIRECT_URL} pnpm build --filter=@blobscan/rest-api-server --filter="./clis/*" # stage: api FROM base AS api @@ -109,6 +112,7 @@ COPY --from=api-builder /app/node_modules/prisma ./node_modules/prisma COPY --from=api-builder /app/node_modules/@prisma ./node_modules/@prisma COPY --from=api-builder /app/apps/rest-api-server/dist ./ COPY --from=api-builder /prepare/api/full/packages/db/prisma/migrations ./migrations +COPY --from=api-builder /app/clis ./clis EXPOSE 3001 ENV PORT=3001 diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 1a7182499..3927c363b 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -20,11 +20,25 @@ _main() { elif [ "$1" = 'api' ]; then apply_prisma_migrations --schema schema.prisma node /app/index.js + elif [ "$1" = 'blob-propagation' ]; then + shift + cd /app/clis/blob-propagation-jobs-cli + node dist/main.js "$@" + elif [ "$1" = 'stats-aggregation' ]; then + shift + cd /app/clis/stats-aggregation-cli + node dist/main.js "$@" elif [ "$1" = '--help' ]; then echo "## Blobscan ##" echo "" echo "Usage:" - echo "$0 [web|api]" + echo "$0 [web|api|blob-propagation|stats-aggregation]" + echo "" + echo "Commands:" + echo " web Start the web server" + echo " api Start the API server" + echo " blob-propagation Run blob propagation CLI commands" + echo " stats-aggregation Run stats aggregation CLI commands" else echo "Invalid command: $1" exit 1