# syntax=docker/dockerfile:1.19.0 # This file is generated by Dofigen v2.8.0 # See https://github.com/lenra-io/dofigen # install FROM node@sha256:0e0ff40c39bc087845bfb27465a0df4ea419520094bc35842ff83dd8cbe6f9b6 AS install LABEL \ org.opencontainers.image.base.digest="sha256:0e0ff40c39bc087845bfb27465a0df4ea419520094bc35842ff83dd8cbe6f9b6" \ org.opencontainers.image.base.name="docker.io/node:24-slim" \ org.opencontainers.image.stage="install" WORKDIR /app/ RUN \ --mount=type=bind,target=pnpm-workspace.yaml,source=pnpm-workspace.yaml \ --mount=type=bind,target=pnpm-lock.yaml,source=pnpm-lock.yaml \ --mount=type=bind,target=package.json,source=package.json \ --mount=type=bind,target=apps/workflows/package.json,source=apps/workflows/package.json \ --mount=type=bind,target=packages/assertions/package.json,source=packages/assertions/package.json \ --mount=type=bind,target=packages/db/package.json,source=packages/db/package.json \ --mount=type=bind,target=packages/emails/package.json,source=packages/emails/package.json \ --mount=type=bind,target=packages/notifications/base/package.json,source=packages/notifications/base/package.json \ --mount=type=bind,target=packages/notifications/discord/package.json,source=packages/notifications/discord/package.json \ --mount=type=bind,target=packages/notifications/email/package.json,source=packages/notifications/email/package.json \ --mount=type=bind,target=packages/notifications/grafana-oncall/package.json,source=packages/notifications/grafana-oncall/package.json \ --mount=type=bind,target=packages/notifications/google-chat/package.json,source=packages/notifications/google-chat/package.json \ --mount=type=bind,target=packages/notifications/ms-teams/package.json,source=packages/notifications/ms-teams/package.json \ --mount=type=bind,target=packages/notifications/ntfy/package.json,source=packages/notifications/ntfy/package.json \ --mount=type=bind,target=packages/notifications/opsgenie/package.json,source=packages/notifications/opsgenie/package.json \ --mount=type=bind,target=packages/notifications/pagerduty/package.json,source=packages/notifications/pagerduty/package.json \ --mount=type=bind,target=packages/notifications/slack/package.json,source=packages/notifications/slack/package.json \ --mount=type=bind,target=packages/notifications/telegram/package.json,source=packages/notifications/telegram/package.json \ --mount=type=bind,target=packages/notifications/bird-whatsapp/package.json,source=packages/notifications/bird-whatsapp/package.json \ --mount=type=bind,target=packages/notifications/twillio-sms/package.json,source=packages/notifications/twillio-sms/package.json \ --mount=type=bind,target=packages/notifications/webhook/package.json,source=packages/notifications/webhook/package.json \ --mount=type=bind,target=packages/importers/package.json,source=packages/importers/package.json \ --mount=type=bind,target=packages/regions/package.json,source=packages/regions/package.json \ --mount=type=bind,target=packages/services/package.json,source=packages/services/package.json \ --mount=type=bind,target=packages/subscriptions/package.json,source=packages/subscriptions/package.json \ --mount=type=bind,target=packages/utils/package.json,source=packages/utils/package.json \ --mount=type=bind,target=packages/tsconfig/package.json,source=packages/tsconfig/package.json \ --mount=type=bind,target=packages/tinybird/package.json,source=packages/tinybird/package.json \ --mount=type=bind,target=packages/upstash/package.json,source=packages/upstash/package.json \ --mount=type=bind,target=packages/theme-store/package.json,source=packages/theme-store/package.json \ --mount=type=bind,target=packages/locales/package.json,source=packages/locales/package.json \ --mount=type=bind,target=packages/status-fetcher/package.json,source=packages/status-fetcher/package.json \ --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked \ <{for(const e of Deno.readDirSync(p))if(e.name.startsWith(x+"@"))return e.name.slice(x.length+1).split("_")[0]};Deno.writeTextFileSync("/tmp/sc/package.json",JSON.stringify({dependencies:{"@libsql/client":v("@libsql+client"),libsql:v("libsql"),"@google-cloud/tasks":v("@google-cloud+tasks")}}))' cd /tmp/sc && deno install --node-modules-dir=auto --allow-scripts cd /app/apps/workflows && deno bundle --platform=deno --minify --sloppy-imports --node-modules-dir=manual --external '@libsql/client' --external 'libsql' --external '@google-cloud/tasks' --output /tmp/sc/_serve.bundle.mjs src/serve.ts cd /tmp/sc && deno compile --no-check -A --node-modules-dir=manual --output /app/apps/workflows/app /tmp/sc/_serve.bundle.mjs mkdir -p /app/data EOF # runtime FROM registry.access.redhat.com/hi/curl@sha256:848b81ab5d5e55371d7193fd4f1ea7b605d14dbb039344ffad34a4c1f0d880f4 AS runtime LABEL \ io.dofigen.version="2.8.0" \ org.opencontainers.image.authors="OpenStatus Team" \ org.opencontainers.image.base.digest="sha256:848b81ab5d5e55371d7193fd4f1ea7b605d14dbb039344ffad34a4c1f0d880f4" \ org.opencontainers.image.description="Background job processing and probe scheduling for OpenStatus" \ org.opencontainers.image.source="https://github.com/openstatusHQ/openstatus" \ org.opencontainers.image.title="OpenStatus Workflows" \ org.opencontainers.image.vendor="OpenStatus" WORKDIR /app/ COPY \ --from=build \ --chown=1000:1000 \ --chmod=555 \ --link \ "/app/apps/workflows/app" "/app/apps/workflows/" COPY \ --from=build \ --chown=1000:1000 \ --link \ "/app/data" "/app/data" USER 1000:1000 EXPOSE 3000 HEALTHCHECK \ --interval=1m \ --timeout=10s \ --start-period=30s \ --retries=3 \ CMD ["curl", "-f", "http://localhost:3000/ping"] ENTRYPOINT ["/app/apps/workflows/app"]