Openstatus
www.openstatus.dev
1# syntax=docker/dockerfile:1.11
2# This file is generated by Dofigen v2.5.1
3# See https://github.com/lenra-io/dofigen
4
5# builder
6FROM node@sha256:0afb7822fac7bf9d7c1bf3b6e6c496dee6b2b64d8dfa365501a3c68e8eba94b2 AS builder
7LABEL \
8 org.opencontainers.image.base.digest="sha256:0afb7822fac7bf9d7c1bf3b6e6c496dee6b2b64d8dfa365501a3c68e8eba94b2" \
9 org.opencontainers.image.base.name="docker.io/node:24-slim"
10ENV \
11 PATH="$PNPM_HOME:$PATH" \
12 CRON_SECRET="test" \
13 RESEND_API_KEY="test" \
14 STRIPE_SECRET_KEY="test" \
15 TINY_BIRD_API_KEY="test" \
16 TEAM_ID_VERCEL="test" \
17 PROJECT_ID_VERCEL="test" \
18 SELF_HOST="true" \
19 NODE_ENV="production" \
20 NEXT_PUBLIC_OPENPANEL_CLIENT_ID="test" \
21 OPENPANEL_CLIENT_SECRET="test" \
22 NEXT_PUBLIC_URL="http://localhost:3002" \
23 UNKEY_TOKEN="test" \
24 RANDOM_YOLO="YOLO" \
25 UPSTASH_REDIS_REST_TOKEN="test" \
26 UNKEY_API_ID="test" \
27 DATABASE_URL="http://libsql:8080" \
28 UPSTASH_REDIS_REST_URL="test" \
29 VERCEL_AUTH_BEARER_TOKEN="test" \
30 PNPM_HOME="/pnpm" \
31 DATABASE_AUTH_TOKEN="test"
32WORKDIR /app
33COPY \
34 --link \
35 "." "/app/"
36RUN <<EOF
37corepack enable
38pnpm install --frozen-lockfile
39pnpm turbo run build --filter=@openstatus/status-page
40EOF
41
42# runtime
43FROM node@sha256:0afb7822fac7bf9d7c1bf3b6e6c496dee6b2b64d8dfa365501a3c68e8eba94b2 AS runtime
44LABEL \
45 io.dofigen.version="2.5.1" \
46 org.opencontainers.image.base.digest="sha256:0afb7822fac7bf9d7c1bf3b6e6c496dee6b2b64d8dfa365501a3c68e8eba94b2" \
47 org.opencontainers.image.base.name="docker.io/node:24-slim"
48WORKDIR /app/apps/status-page
49COPY \
50 --from=builder \
51 --chown=1000:1000 \
52 --chmod=555 \
53 --link \
54 "/app/apps/status-page/.next/standalone/apps/status-page/" "./"
55COPY \
56 --from=builder \
57 --chown=1000:1000 \
58 --link \
59 "/app/node_modules/" "/app/node_modules/"
60COPY \
61 --from=builder \
62 --chown=1000:1000 \
63 --link \
64 "/app/apps/status-page/.next/static/" "./.next/static/"
65COPY \
66 --from=builder \
67 --chown=1000:1000 \
68 --link \
69 "/app/apps/status-page/public/" "./public/"
70USER 0:0
71RUN <<EOF
72apt-get update
73apt-get install -y --no-install-recommends curl
74rm -rf /var/lib/apt/lists/*
75EOF
76USER 1000:1000
77EXPOSE 3000
78HEALTHCHECK \
79 --interval=30s \
80 --timeout=10s \
81 --start-period=45s \
82 --retries=3 \
83 CMD curl -f http://localhost:3000/ || exit 1
84CMD ["node", "server.js"]