Openstatus www.openstatus.dev
at 4c0f4c00a38753a5d0dfd7e7b7b7706dec6f1503 179 lines 5.3 kB view raw
1effective: | 2 builders: 3 builder: 4 fromImage: 5 path: node 6 digest: sha256:0afb7822fac7bf9d7c1bf3b6e6c496dee6b2b64d8dfa365501a3c68e8eba94b2 7 label: 8 org.opencontainers.image.base.digest: sha256:0afb7822fac7bf9d7c1bf3b6e6c496dee6b2b64d8dfa365501a3c68e8eba94b2 9 org.opencontainers.image.base.name: docker.io/node:24-slim 10 workdir: /app 11 env: 12 PROJECT_ID_VERCEL: test 13 CRON_SECRET: test 14 DATABASE_URL: http://libsql:8080 15 DATABASE_AUTH_TOKEN: test 16 UPSTASH_REDIS_REST_TOKEN: test 17 UPSTASH_REDIS_REST_URL: test 18 AUTH_SECRET: build-time-placeholder-min-32-chars-long 19 OPENPANEL_CLIENT_SECRET: test 20 VERCEL_AUTH_BEARER_TOKEN: test 21 TEAM_ID_VERCEL: test 22 TINY_BIRD_API_KEY: test 23 UNKEY_TOKEN: test 24 NEXT_PUBLIC_URL: http://localhost:3002 25 STRIPE_SECRET_KEY: test 26 UNKEY_API_ID: test 27 NEXT_PUBLIC_OPENPANEL_CLIENT_ID: test 28 PATH: $PNPM_HOME:$PATH 29 NODE_ENV: production 30 SELF_HOST: 'true' 31 PNPM_HOME: /pnpm 32 RESEND_API_KEY: test 33 copy: 34 - paths: 35 - . 36 target: /app/ 37 run: 38 - corepack enable 39 - pnpm install --frozen-lockfile 40 - pnpm turbo run build --filter=@openstatus/dashboard 41 fromImage: 42 path: node 43 digest: sha256:0afb7822fac7bf9d7c1bf3b6e6c496dee6b2b64d8dfa365501a3c68e8eba94b2 44 label: 45 org.opencontainers.image.base.digest: sha256:0afb7822fac7bf9d7c1bf3b6e6c496dee6b2b64d8dfa365501a3c68e8eba94b2 46 org.opencontainers.image.base.name: docker.io/node:24-slim 47 io.dofigen.version: 2.5.1 48 user: 49 user: '1000' 50 group: '1000' 51 workdir: /app/apps/dashboard 52 copy: 53 - fromBuilder: builder 54 paths: 55 - /app/apps/dashboard/.next/standalone/apps/dashboard/ 56 target: ./ 57 chmod: '555' 58 - fromBuilder: builder 59 paths: 60 - /app/node_modules/ 61 target: /app/node_modules/ 62 - fromBuilder: builder 63 paths: 64 - /app/apps/dashboard/.next/static/ 65 target: ./.next/static/ 66 - fromBuilder: builder 67 paths: 68 - /app/apps/dashboard/public/ 69 target: ./public/ 70 root: 71 run: 72 - apt-get update 73 - apt-get install -y --no-install-recommends curl 74 - rm -rf /var/lib/apt/lists/* 75 cmd: 76 - node 77 - server.js 78 expose: 79 - port: 3000 80 healthcheck: 81 cmd: curl -f http://localhost:3000/ || exit 1 82 interval: 30s 83 timeout: 10s 84 start: 45s 85 retries: 3 86images: 87 docker.io: 88 library: 89 node: 90 24-slim: 91 digest: sha256:0afb7822fac7bf9d7c1bf3b6e6c496dee6b2b64d8dfa365501a3c68e8eba94b2 92resources: 93 dofigen.yml: 94 hash: 9f3113ec1095f913b3cc8e6202c7f1cc93087b2418ad8da90aa7ea0ccbd35579 95 content: | 96 builders: 97 # Stage 1: Next.js build with Node.js 98 builder: 99 fromImage: node:24-slim 100 workdir: /app 101 copy: 102 - . /app/ 103 env: 104 NODE_ENV: production 105 PNPM_HOME: /pnpm 106 PATH: $PNPM_HOME:$PATH 107 # Build-time environment variables (placeholder values, overwritten by .env.docker at runtime) 108 DATABASE_URL: http://libsql:8080 109 DATABASE_AUTH_TOKEN: test 110 NEXT_PUBLIC_OPENPANEL_CLIENT_ID: test 111 NEXT_PUBLIC_URL: http://localhost:3002 112 TEAM_ID_VERCEL: test 113 PROJECT_ID_VERCEL: test 114 VERCEL_AUTH_BEARER_TOKEN: test 115 OPENPANEL_CLIENT_SECRET: test 116 RESEND_API_KEY: test 117 UPSTASH_REDIS_REST_URL: test 118 UPSTASH_REDIS_REST_TOKEN: test 119 UNKEY_TOKEN: test 120 UNKEY_API_ID: test 121 TINY_BIRD_API_KEY: test 122 CRON_SECRET: test 123 STRIPE_SECRET_KEY: test 124 AUTH_SECRET: build-time-placeholder-min-32-chars-long 125 SELF_HOST: "true" 126 run: 127 - corepack enable 128 - pnpm install --frozen-lockfile 129 - pnpm turbo run build --filter=@openstatus/dashboard 130 131 # Runtime stage 132 fromImage: node:24-slim 133 workdir: /app/apps/dashboard 134 135 # Copy artifacts from builder 136 copy: 137 # Copy Next.js standalone output 138 - fromBuilder: builder 139 source: /app/apps/dashboard/.next/standalone/apps/dashboard/ 140 target: ./ 141 chmod: "555" 142 # Copy root node_modules (required for pnpm symlinks) 143 - fromBuilder: builder 144 source: /app/node_modules/ 145 target: /app/node_modules/ 146 # Copy static assets 147 - fromBuilder: builder 148 source: /app/apps/dashboard/.next/static/ 149 target: ./.next/static/ 150 # Copy public directory 151 - fromBuilder: builder 152 source: /app/apps/dashboard/public/ 153 target: ./public/ 154 155 # Install curl for health checks 156 root: 157 run: 158 - apt-get update 159 - apt-get install -y --no-install-recommends curl 160 - rm -rf /var/lib/apt/lists/* 161 162 # Security: run as non-root user 163 user: "1000:1000" 164 165 # Expose port 166 expose: "3000" 167 168 # Health check 169 healthcheck: 170 interval: 30s 171 timeout: 10s 172 start: 45s 173 retries: 3 174 cmd: curl -f http://localhost:3000/ || exit 1 175 176 # Start application 177 cmd: 178 - node 179 - server.js