From 43954d7af8d90755f393f426e75a507f4135c1d0 Mon Sep 17 00:00:00 2001 From: Nulo Date: Sat, 6 Jan 2024 21:17:18 -0300 Subject: [PATCH] correr cron en sitio --- Dockerfile | 22 +++------------------- bun.lockb | Bin 196184 -> 197208 bytes sitio/package.json | 1 + sitio/src/hooks.server.ts | 17 +++++++++++++++++ 4 files changed, 21 insertions(+), 19 deletions(-) create mode 100644 sitio/src/hooks.server.ts diff --git a/Dockerfile b/Dockerfile index 8ffab3b..d3d1879 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,17 +11,7 @@ RUN cd sitio && \ RUN bun build scraper/cli.ts --target=bun --outfile=/tmp/cli.build.js FROM base -ARG S6_OVERLAY_VERSION=3.1.6.2 -RUN apk add --no-cache nodejs npm jq - -ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp -RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz -ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-x86_64.tar.xz /tmp -RUN tar -C / -Jxpf /tmp/s6-overlay-x86_64.tar.xz - -# Cron scraper -RUN printf "#!/bin/sh\nexec bun /bin/scraper auto\n" > /etc/periodic/daily/scraper \ - && chmod +x /etc/periodic/daily/scraper +RUN apk add --no-cache tini nodejs npm jq # Sitio COPY --from=build /usr/src/app/sitio/package.json package.real.json @@ -37,11 +27,5 @@ ENV NODE_ENV=production ENV DB_PATH=/db/db.db EXPOSE 3000 -# Servicios -RUN mkdir -p /etc/services.d/sitio /etc/services.d/scraper && \ - printf "#!/command/execlineb -P\nnode /usr/src/app\n" > /etc/services.d/sitio/run && \ - chmod +x /etc/services.d/sitio/run && \ - printf "#!/command/execlineb -P\nbusybox crond -f -l2\n" > /etc/services.d/scraper/run && \ - chmod +x /etc/services.d/scraper/run - -ENTRYPOINT ["/init"] \ No newline at end of file +ENTRYPOINT ["tini", "--"] +CMD ["node", "."] \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 237bd328ad8dc793dac67d8e521ee65f21351643..1dffe9267f9196efb47eecb96941e4ae3f1c3468 100755 GIT binary patch delta 36193 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 diff --git a/sitio/package.json b/sitio/package.json index 74677bc..575e1f4 100644 --- a/sitio/package.json +++ b/sitio/package.json @@ -38,6 +38,7 @@ "better-sqlite3": "^9.2.2", "chart.js": "^4.4.1", "chartjs-adapter-dayjs-4": "^1.0.4", + "cron": "^3.1.6", "dayjs": "^1.11.10", "drizzle-orm": "^0.29.1" } diff --git a/sitio/src/hooks.server.ts b/sitio/src/hooks.server.ts new file mode 100644 index 0000000..7358ae5 --- /dev/null +++ b/sitio/src/hooks.server.ts @@ -0,0 +1,17 @@ +import { spawn } from "child_process"; +import { CronJob } from "cron"; + +if (process.env.NODE_ENV === "production") { + const job = CronJob.from({ + cronTime: "0 3 * * *", + onTick: function () { + runScraper(); + }, + start: true, + timeZone: "America/Argentina/Buenos_Aires", + }); +} + +function runScraper() { + spawn("bun", ["/bin/scraper", "auto"], { stdio: "inherit" }); +}