Spaces:
Running
Running
github-actions[bot] commited on
Commit ·
5fcea3d
0
Parent(s):
deploy: 93a94083 — 2026-07-09 21:56 UTC
Browse files- Dockerfile +21 -0
- LAST_COMMIT_DATE.txt +1 -0
- README.md +11 -0
- SOURCE_COMMIT_SHA.txt +1 -0
- start.sh +51 -0
Dockerfile
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM node:20-alpine
|
| 2 |
+
|
| 3 |
+
WORKDIR /bootstrap
|
| 4 |
+
|
| 5 |
+
RUN apk add --no-cache bash git ca-certificates openssh-client shadow python3 make g++
|
| 6 |
+
|
| 7 |
+
ENV NODE_ENV=production
|
| 8 |
+
ENV NODE_OPTIONS="--max-old-space-size=8192"
|
| 9 |
+
ENV PORT=7860
|
| 10 |
+
ENV UV_THREADPOOL_SIZE=4
|
| 11 |
+
ENV ROOT_PASSWORD=""
|
| 12 |
+
ENV ADMIN_TERMINAL_SECRET=""
|
| 13 |
+
COPY start.sh /bootstrap/start.sh
|
| 14 |
+
RUN chmod +x /bootstrap/start.sh
|
| 15 |
+
|
| 16 |
+
EXPOSE 7860
|
| 17 |
+
|
| 18 |
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
|
| 19 |
+
CMD node -e "const http=require('http'); const req=http.get({host:'127.0.0.1',port:process.env.PORT||7860,path:'/api/health',timeout:5000},(res)=>process.exit(res.statusCode===200?0:1)); req.on('error',()=>process.exit(1)); req.on('timeout',()=>{req.destroy();process.exit(1)});"
|
| 20 |
+
|
| 21 |
+
CMD ["/bootstrap/start.sh"]
|
LAST_COMMIT_DATE.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
2026-07-10T00:56:59+03:00
|
README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: Pulltime Backend
|
| 3 |
+
emoji: 🚀
|
| 4 |
+
colorFrom: blue
|
| 5 |
+
colorTo: indigo
|
| 6 |
+
sdk: docker
|
| 7 |
+
app_port: 7860
|
| 8 |
+
pinned: false
|
| 9 |
+
---
|
| 10 |
+
|
| 11 |
+
Pulltime uptime monitoring platform — backend API server (Fastify + Node.js).
|
SOURCE_COMMIT_SHA.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
93a94083c620957f259c8b6d907fe65412de3f5a
|
start.sh
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
set -euo pipefail
|
| 3 |
+
|
| 4 |
+
if [ -z "${GH_REPO_TOKEN:-}" ]; then
|
| 5 |
+
echo "GH_REPO_TOKEN secret missing. Configure it in Hugging Face Space Settings -> Variables and secrets." >&2
|
| 6 |
+
exit 1
|
| 7 |
+
fi
|
| 8 |
+
|
| 9 |
+
REPO_SLUG="${GH_REPO_SLUG:-shs3131/pulltime}"
|
| 10 |
+
REPO_REF="${GH_REPO_REF:-main}"
|
| 11 |
+
APP_SUBDIR="${GH_APP_SUBDIR:-server}"
|
| 12 |
+
APP_DIR="/runtime/app"
|
| 13 |
+
|
| 14 |
+
if [ -n "${ROOT_PASSWORD:-}" ]; then
|
| 15 |
+
if command -v chpasswd >/dev/null 2>&1; then
|
| 16 |
+
echo "root:${ROOT_PASSWORD}" | chpasswd
|
| 17 |
+
echo "ROOT_PASSWORD applied for root user."
|
| 18 |
+
else
|
| 19 |
+
echo "chpasswd not found. Install shadow package in the image." >&2
|
| 20 |
+
exit 1
|
| 21 |
+
fi
|
| 22 |
+
fi
|
| 23 |
+
|
| 24 |
+
mkdir -p /runtime
|
| 25 |
+
rm -rf "$APP_DIR"
|
| 26 |
+
|
| 27 |
+
# Clone private GitHub repository using token auth (stable for github.com HTTPS)
|
| 28 |
+
git clone --depth 1 --branch "$REPO_REF" "https://x-access-token:${GH_REPO_TOKEN}@github.com/${REPO_SLUG}.git" "$APP_DIR"
|
| 29 |
+
|
| 30 |
+
cd "$APP_DIR/$APP_SUBDIR"
|
| 31 |
+
|
| 32 |
+
if [ ! -f package.json ]; then
|
| 33 |
+
echo "package.json not found in ${APP_SUBDIR}. Check GH_APP_SUBDIR." >&2
|
| 34 |
+
exit 1
|
| 35 |
+
fi
|
| 36 |
+
|
| 37 |
+
ALLOW_LOCKFILE_BYPASS="${ALLOW_LOCKFILE_BYPASS:-true}"
|
| 38 |
+
|
| 39 |
+
if npm ci --omit=dev; then
|
| 40 |
+
echo "Dependencies installed with npm ci."
|
| 41 |
+
else
|
| 42 |
+
if [ "${ALLOW_LOCKFILE_BYPASS}" = "true" ]; then
|
| 43 |
+
echo "npm ci failed (lock mismatch). Falling back to npm install --omit=dev." >&2
|
| 44 |
+
npm install --omit=dev --no-audit --no-fund
|
| 45 |
+
else
|
| 46 |
+
echo "npm ci failed and lockfile bypass is disabled (ALLOW_LOCKFILE_BYPASS=false)." >&2
|
| 47 |
+
exit 1
|
| 48 |
+
fi
|
| 49 |
+
fi
|
| 50 |
+
|
| 51 |
+
exec npm start
|